PyPyNum 1.18.0__tar.gz → 1.19.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. {pypynum-1.18.0 → pypynum-1.19.0}/PKG-INFO +252 -336
  2. {pypynum-1.18.0 → pypynum-1.19.0}/PyPyNum.egg-info/PKG-INFO +252 -336
  3. {pypynum-1.18.0 → pypynum-1.19.0}/PyPyNum.egg-info/SOURCES.txt +0 -1
  4. pypynum-1.19.0/pypynum/PyPyNum.png +0 -0
  5. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/README.md +251 -335
  6. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/__init__.py +2 -2
  7. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/arrays.py +129 -59
  8. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/dists.py +189 -210
  9. pypynum-1.19.0/pypynum/geoms.py +548 -0
  10. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/graphs.py +53 -25
  11. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/hypcmpnms.py +59 -0
  12. pypynum-1.19.0/pypynum/images.py +3279 -0
  13. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/maths.py +10 -58
  14. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/matrices.py +238 -103
  15. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/numbers.py +26 -14
  16. pypynum-1.19.0/pypynum/plotting.py +388 -0
  17. pypynum-1.19.0/pypynum/test.py +438 -0
  18. pypynum-1.19.0/pypynum/ufuncs.py +269 -0
  19. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/utils.py +43 -33
  20. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/vectors.py +7 -7
  21. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/zh_cn.py +0 -20
  22. {pypynum-1.18.0 → pypynum-1.19.0}/setup.py +12 -6
  23. pypynum-1.18.0/pypynum/PyPyNum.png +0 -0
  24. pypynum-1.18.0/pypynum/geoms.py +0 -325
  25. pypynum-1.18.0/pypynum/huffman +0 -1
  26. pypynum-1.18.0/pypynum/images.py +0 -902
  27. pypynum-1.18.0/pypynum/plotting.py +0 -180
  28. pypynum-1.18.0/pypynum/test.py +0 -354
  29. pypynum-1.18.0/pypynum/ufuncs.py +0 -120
  30. {pypynum-1.18.0 → pypynum-1.19.0}/PyPyNum.egg-info/dependency_links.txt +0 -0
  31. {pypynum-1.18.0 → pypynum-1.19.0}/PyPyNum.egg-info/top_level.txt +0 -0
  32. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/chars.py +0 -0
  33. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/ciphers.py +0 -0
  34. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/consts.py +0 -0
  35. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/crandom.py +0 -0
  36. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/dataproc.py +0 -0
  37. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/equations.py +0 -0
  38. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/fft.py +0 -0
  39. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/files.py +0 -0
  40. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/groups.py +0 -0
  41. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/interp.py +0 -0
  42. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/kernels.py +0 -0
  43. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/logics.py +0 -0
  44. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/multiprec.py +0 -0
  45. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/networks.py +0 -0
  46. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/polys.py +0 -0
  47. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/pprinters.py +0 -0
  48. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/random.py +0 -0
  49. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/regs.py +0 -0
  50. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/seqs.py +0 -0
  51. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/special.py +0 -0
  52. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/stattest.py +0 -0
  53. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/symbols.py +0 -0
  54. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/tensors.py +0 -0
  55. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/this.py +0 -0
  56. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/tools.py +0 -0
  57. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/trees.py +0 -0
  58. {pypynum-1.18.0 → pypynum-1.19.0}/pypynum/types.py +0 -0
  59. {pypynum-1.18.0 → pypynum-1.19.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyPyNum
3
- Version: 1.18.0
3
+ Version: 1.19.0
4
4
  Summary: PyPyNum is a versatile Python math lib. It features modules for math, data analysis, arrays, crypto, physics, RNG, data proc, stats, eq solving, image proc, interp, matrix calc, and high-prec math. Designed for scientific computing, data science, and ML, it offers efficient, general-purpose tools.
5
5
  Home-page: https://github.com/PythonSJL/PyPyNum
6
6
  Author: Shen Jiayi
@@ -40,7 +40,7 @@ science, and ML, it offers efficient, general-purpose tools.
40
40
  [![Downloads](https://static.pepy.tech/badge/pypynum/month)](https://pepy.tech/project/pypynum)
41
41
  [![Downloads](https://static.pepy.tech/badge/pypynum/week)](https://pepy.tech/project/pypynum)
42
42
 
43
- ## PyPyNum | Version -> 1.18.0 | PyPI -> https://pypi.org/project/PyPyNum/ | Gitee -> https://www.gitee.com/PythonSJL/PyPyNum | GitHub -> https://github.com/PythonSJL/PyPyNum
43
+ ## PyPyNum | Version -> 1.19.0 | PyPI -> https://pypi.org/project/PyPyNum/ | Gitee -> https://www.gitee.com/PythonSJL/PyPyNum | GitHub -> https://github.com/PythonSJL/PyPyNum
44
44
 
45
45
  ![LOGO](PyPyNum.png)
46
46
 
@@ -169,70 +169,52 @@ Python interpreter and run it!
169
169
 
170
170
  ### Functional Changes Compared to the Previous Version
171
171
 
172
- ```
173
- !=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=
174
-
175
- PyPyNum version 1.18.0 has undergone the following functional changes compared to version 1.17.2:
172
+ **`pypynum.images`**
176
173
 
177
- 1. `arrays` Module
178
- a. Fixed reflection operation errors in the `Array` class.
174
+ - Added comprehensive support for the **GIF format**, including LZW encoding/decoding, multi-frame animations,
175
+ interlacing, and local/global palettes.
176
+ - Completely rewrote the **JPEG** module: now supports **progressive JPEG**, chroma subsampling (e.g., 4:2:0), grayscale
177
+ images, restart markers, and dynamic Huffman tree construction.
178
+ - Extended **PNG** and **BMP** support to handle low-bit-depth indexed colors (1/2/4-bit) and grayscale modes. Added
179
+ support for PNG Adam7 interlacing.
180
+ - Introduced octree color quantization and universal image format conversion (e.g., converting between BMP, PNG, JPEG,
181
+ and GIF with specific color modes).
179
182
 
180
- 2. `ciphers` Module
181
- a. The `base_64` function's input parameter and return type have been changed from `str` to `bytes`.
183
+ **`pypynum.plotting`**
182
184
 
183
- 3. `groups` Module
184
- a. The `Group` class has been refactored and new available methods have been added.
185
- b. The `group` function now accepts an additional `operation` parameter.
185
+ - Refactored the plotting module into an object-oriented `Canvas` class for better state management and rendering.
186
+ - Significantly improved the contour plotting algorithm by implementing adaptive quadtree subdivision and Lipschitz
187
+ constant interval pruning, replacing the previous brute-force pixel scanning.
186
188
 
187
- 4. `images` Module
188
- a. Added a new class `JPEG` for JPEG image handling.
189
- b. Added JPEG processing functions: `jpeg_adjust_qtable`, `jpeg_category`, `jpeg_channel_encoding`,
190
- `jpeg_chroma_dc_huff`, `jpeg_dct8x8`, `jpeg_decode_pixels`, `jpeg_encode_pixels`, `jpeg_luma_dc_huff`,
191
- `jpeg_rle_decoding`, `jpeg_rle_encoding`, `jpeg_split_pixels`, and `jpeg_zigzag`.
192
- c. Added color space conversion functions `rgb2ycbcr` and `ycbcr2rgb` (which are JPEG-related functions).
193
- d. Added `entropy` function (which is a PNG function).
194
- e. Added PNG filter functions `png_apply_filter` and `png_reverse_filter`, allowing the `apply_filter` parameter
195
- to be specified during writing to compress the generated file size.
189
+ **`pypynum.ufuncs`**
196
190
 
197
- 5. `kernels` Module
198
- a. Added `matmul8x8kernel` function for 8x8 matrix multiplication kernel operations.
191
+ - Added a suite of advanced special functions with full support for complex numbers and arrays: `gamma`, `loggamma`,
192
+ `beta`, `logbeta`, `factorial`, `logfactorial`, `pochhammer`, and `binomial`.
193
+ - Added `dtype` parameter support to universal function applications for better type control.
199
194
 
200
- 6. `maths` Module
201
- a. Added `dsigmoid` function.
202
- b. Updated `sumprod` function with a new `floating` parameter.
195
+ **`pypynum.maths`**
203
196
 
204
- 7. `matrices` Module
205
- a. Added `dctmtx` function to generate a discrete cosine transform matrix.
197
+ - Enhanced statistical functions (`ptp`, `median`, `mean`, `var`, `std`) to fully support complex number sequences.
206
198
 
207
- 8. `numbers` Module
208
- a. Added `round_sigfig` function.
209
- b. Added `words2int` function to convert English words to integers.
199
+ **`pypynum.graphs`**
210
200
 
211
- 9. `plotting` Module
212
- a. Renamed the `color` function to `colortext`.
201
+ - Improved vertex removal logic to safely handle unconnected nodes across all graph types.
202
+ - Enhanced `dijkstra` and path reconstruction algorithms to correctly handle unreachable vertices and use all graph
203
+ vertices for initialization.
204
+ - `all_edges()` now returns weights as a third element for weighted graphs.
213
205
 
214
- 10. `seqs` Module
215
- a. Updated `stirling1` function with a new `sign` parameter.
206
+ **`pypynum.arrays` & `pypynum.matrices`**
216
207
 
217
- 11. `special` Module
218
- a. Added `ellipe` and `ellipk` functions for complete elliptic integrals.
208
+ - Improved multidimensional array indexing: integer and slice indexing now correctly returns the appropriate subtype (
209
+ `Array` or `Matrix`) rather than raw lists.
210
+ - Added complex number support for `max`, `min`, `argmax`, and `argmin` operations.
211
+ - `basic()` now accepts a `dtype` parameter and properly reshapes 1D results into single-row matrices.
219
212
 
220
- 12. `symbols` Module
221
- a. Added `Expr` class.
222
- b. Added `build_expr_tree`, `infix2postfix`, and `tokenize` functions.
223
- c. The `parse_expr` function now returns an `Expr` object (previously returned a `list`).
213
+ **`pypynum.dists`**
224
214
 
225
- 13. `ufuncs` Module
226
- a. Renamed comparison functions to follow more explicit naming conventions:
227
- i. `eq` renamed to `equal`
228
- ii. `ge` renamed to `greater_equal`
229
- iii. `gt` renamed to `greater_than`
230
- iv. `le` renamed to `less_equal`
231
- v. `lt` renamed to `less_than`
232
- vi. `ne` renamed to `not_equal`
233
-
234
- !=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=!=
235
- ```
215
+ - Standardized parameter names and orderings across multiple statistical distributions for a more intuitive interface (
216
+ e.g., `scale` -> `lam` for exponential/Poisson distributions, updated parameter models for uniform, Pareto, and
217
+ Weibull distributions).
236
218
 
237
219
  ### Run Time Test
238
220
 
@@ -260,23 +242,21 @@ Python interpreter version
260
242
  PyPyNum
261
243
  ├── arrays
262
244
  │ ├── CLASS
263
- │ │ ├── Array(object)/__init__(self: Any, data: Any, check: Any) -> Any
264
- │ │ └── BoolArray(pypynum.arrays.Array)/__init__(self: Any, data: Any, check: Any) -> Any
245
+ │ │ ├── Array(object)/__init__(self: Any, data: Any, check: Any, dtype: Any) -> Any
246
+ │ │ └── BoolArray(pypynum.arrays.Array)/__init__(self: Any, data: Any, check: Any, dtype: Any) -> Any
265
247
  │ └── FUNCTION
266
- │ ├── array(data: Any) -> Any
267
- │ ├── asarray(data: Any) -> Any
268
- │ ├── aslist(data: Any) -> Any
248
+ │ ├── array(data: Any, dtype: Any) -> Any
269
249
  │ ├── boolarray(data: Any) -> Any
270
- │ ├── fill(shape: typing.Union[list, tuple], sequence: typing.Union[list, tuple, str], repeat: bool, pad: typing.Any, rtype: typing.Callable) -> typing.Any
271
- │ ├── full(shape: typing.Union[list, tuple], fill_value: typing.Any, rtype: typing.Callable) -> typing.Any
272
- │ ├── full_like(a: typing.Any, fill_value: typing.Any, rtype: typing.Callable) -> typing.Any
250
+ │ ├── fill(shape: typing.Sequence, sequence: typing.Sequence, repeat: bool, pad: typing.Any, rtype: typing.Callable, dtype: type) -> typing.Any
251
+ │ ├── full(shape: typing.Sequence, fill_value: typing.Any, rtype: typing.Callable, dtype: type) -> typing.Any
252
+ │ ├── full_like(a: typing.Any, fill_value: typing.Any, rtype: typing.Callable, dtype: type) -> typing.Any
273
253
  │ ├── get_shape(data: Any) -> Any
274
254
  │ ├── is_valid_array(_array: Any, _shape: Any) -> Any
275
- │ ├── ones(shape: typing.Union[list, tuple], rtype: typing.Callable) -> typing.Any
276
- │ ├── ones_like(a: typing.Any, rtype: typing.Callable) -> typing.Any
255
+ │ ├── ones(shape: typing.Sequence, rtype: typing.Callable, dtype: type) -> typing.Any
256
+ │ ├── ones_like(a: typing.Any, rtype: typing.Callable, dtype: type) -> typing.Any
277
257
  │ ├── tensorproduct(tensors: pypynum.arrays.Array) -> pypynum.arrays.Array
278
- │ ├── zeros(shape: typing.Union[list, tuple], rtype: typing.Callable) -> typing.Any
279
- │ └── zeros_like(a: typing.Any, rtype: typing.Callable) -> typing.Any
258
+ │ ├── zeros(shape: typing.Sequence, rtype: typing.Callable, dtype: type) -> typing.Any
259
+ │ └── zeros_like(a: typing.Any, rtype: typing.Callable, dtype: type) -> typing.Any
280
260
  ├── chars
281
261
  │ ├── CLASS
282
262
  │ └── FUNCTION
@@ -318,41 +298,41 @@ PyPyNum
318
298
  ├── dists
319
299
  │ ├── CLASS
320
300
  │ └── FUNCTION
321
- │ ├── beta_pdf(x: Any, a: Any, b: Any) -> Any
301
+ │ ├── beta_pdf(x: Any, alpha: Any, beta: Any) -> Any
322
302
  │ ├── binom_pmf(k: Any, n: Any, p: Any) -> Any
323
303
  │ ├── cauchy_cdf(x: Any, x0: Any, gamma: Any) -> Any
324
304
  │ ├── cauchy_pdf(x: Any, x0: Any, gamma: Any) -> Any
325
305
  │ ├── chi2_cdf(x: Any, df: Any) -> Any
326
306
  │ ├── chi2_pdf(x: Any, df: Any) -> Any
327
- │ ├── expon_cdf(x: Any, scale: Any) -> Any
328
- │ ├── expon_pdf(x: Any, scale: Any) -> Any
307
+ │ ├── expon_cdf(x: Any, lam: Any) -> Any
308
+ │ ├── expon_pdf(x: Any, lam: Any) -> Any
329
309
  │ ├── f_pdf(x: Any, dfnum: Any, dfden: Any) -> Any
330
310
  │ ├── gamma_pdf(x: Any, shape: Any, scale: Any) -> Any
331
311
  │ ├── geometric_pmf(k: Any, p: Any) -> Any
332
- │ ├── hypergeom_pmf(k: Any, mg: Any, n: Any, nt: Any) -> Any
333
- │ ├── invgauss_pdf(x: Any, mu: Any, lambda_: Any, alpha: Any) -> Any
312
+ │ ├── hypergeom_pmf(k: Any, N: Any, K: Any, n: Any) -> Any
313
+ │ ├── invgauss_pdf(x: Any, mu: Any, lam: Any) -> Any
334
314
  │ ├── levy_pdf(x: Any, c: Any) -> Any
335
315
  │ ├── log_logistic_cdf(x: Any, alpha: Any, beta: Any) -> Any
336
316
  │ ├── log_logistic_pdf(x: Any, alpha: Any, beta: Any) -> Any
337
- │ ├── logistic_cdf(x: Any, mu: Any, s: Any) -> Any
338
- │ ├── logistic_pdf(x: Any, mu: Any, s: Any) -> Any
317
+ │ ├── logistic_cdf(x: Any, loc: Any, scale: Any) -> Any
318
+ │ ├── logistic_pdf(x: Any, loc: Any, scale: Any) -> Any
339
319
  │ ├── lognorm_cdf(x: Any, mu: Any, sigma: Any) -> Any
340
- │ ├── lognorm_pdf(x: Any, s: Any, scale: Any) -> Any
320
+ │ ├── lognorm_pdf(x: Any, mu: Any, sigma: Any) -> Any
341
321
  │ ├── logser_pmf(k: Any, p: Any) -> Any
342
322
  │ ├── multinomial_pmf(k: Any, n: Any, p: Any) -> Any
343
- │ ├── nbinom_pmf(k: Any, n: Any, p: Any) -> Any
344
- │ ├── nhypergeom_pmf(k: Any, m: Any, n: Any, r: Any) -> Any
323
+ │ ├── nbinom_pmf(k: Any, r: Any, p: Any) -> Any
324
+ │ ├── nhypergeom_pmf(k: Any, N: Any, K: Any, r: Any) -> Any
345
325
  │ ├── normal_cdf(x: Any, mu: Any, sigma: Any) -> Any
346
326
  │ ├── normal_pdf(x: Any, mu: Any, sigma: Any) -> Any
347
- │ ├── pareto_pdf(x: Any, k: Any, m: Any) -> Any
348
- │ ├── poisson_pmf(k: Any, mu: Any) -> Any
327
+ │ ├── pareto_pdf(x: Any, alpha: Any, x_m: Any) -> Any
328
+ │ ├── poisson_pmf(k: Any, lam: Any) -> Any
349
329
  │ ├── rayleigh_pdf(x: Any, sigma: Any) -> Any
350
330
  │ ├── t_pdf(x: Any, df: Any) -> Any
351
- │ ├── uniform_cdf(x: Any, loc: Any, scale: Any) -> Any
352
- │ ├── uniform_pdf(x: Any, loc: Any, scale: Any) -> Any
331
+ │ ├── uniform_cdf(x: Any, a: Any, b: Any) -> Any
332
+ │ ├── uniform_pdf(x: Any, a: Any, b: Any) -> Any
353
333
  │ ├── vonmises_pdf(x: Any, mu: Any, kappa: Any) -> Any
354
- │ ├── weibull_max_pdf(x: Any, c: Any, scale: Any, loc: Any) -> Any
355
- │ ├── weibull_min_pdf(x: Any, c: Any, scale: Any, loc: Any) -> Any
334
+ │ ├── weibull_max_pdf(x: Any, k: Any, scale: Any, loc: Any) -> Any
335
+ │ ├── weibull_min_pdf(x: Any, k: Any, scale: Any, loc: Any) -> Any
356
336
  │ └── zipf_pmf(k: Any, s: Any, n: Any) -> Any
357
337
  ├── equations
358
338
  │ ├── CLASS
@@ -377,6 +357,8 @@ PyPyNum
377
357
  │ │ ├── Quadrilateral(object)/__init__(self: Any, a: typing.Union[list, tuple], b: typing.Union[list, tuple], c: typing.Union[list, tuple], d: typing.Union[list, tuple]) -> Any
378
358
  │ │ └── Triangle(object)/__init__(self: Any, a: typing.Union[list, tuple], b: typing.Union[list, tuple], c: typing.Union[list, tuple]) -> Any
379
359
  │ └── FUNCTION
360
+ │ ├── _rotate_point(p: Any, theta: Any, cx: Any, cy: Any) -> Any
361
+ │ ├── _scale_point(p: Any, k: Any, cx: Any, cy: Any) -> Any
380
362
  │ └── distance(g1: Any, g2: Any, error: typing.Union[int, float]) -> float
381
363
  ├── graphs
382
364
  │ ├── CLASS
@@ -406,22 +388,38 @@ PyPyNum
406
388
  │ ├── CLASS
407
389
  │ │ ├── BMP(pypynum.images.BaseImage)/__init__(self: Any) -> None
408
390
  │ │ ├── BaseImage(object)/__init__(self: Any) -> None
391
+ │ │ ├── GIF(pypynum.images.BaseImage)/__init__(self: Any) -> None
409
392
  │ │ ├── JPEG(pypynum.images.BaseImage)/__init__(self: Any) -> None
410
- │ │ └── PNG(pypynum.images.BaseImage)/__init__(self: Any) -> None
393
+ │ │ ├── OctreeNode(object)/__init__(self: Any, level: Any, parent: Any) -> Any
394
+ │ │ ├── PNG(pypynum.images.BaseImage)/__init__(self: Any) -> None
395
+ │ │ ├── _BitReader(object)/__init__(self: Any, data: bytes) -> None
396
+ │ │ └── _BitWriter(object)/__init__(self: Any) -> None
411
397
  │ └── FUNCTION
398
+ │ ├── __dht2dict(dht_bytes: Any) -> Any
399
+ │ ├── _deinterlace(pixels: list, w: int, h: int) -> list
400
+ │ ├── _find_closest_color(color: Any, palette: Any, octree_root: Any) -> int
401
+ │ ├── _interlace(pixels: list, w: int, h: int) -> list
402
+ │ ├── _lzw_decode(min_code_size: int, data: bytes) -> list
403
+ │ ├── _lzw_encode(min_code_size: int, pixels: list) -> bytes
404
+ │ ├── _norm_palette(pal: list) -> list
405
+ │ ├── _read_sub_blocks(data: bytes, offset: int) -> tuple
406
+ │ ├── _write_sub_blocks(raw: bytes) -> bytes
412
407
  │ ├── entropy(data: typing.Any) -> float
413
408
  │ ├── jpeg_adjust_qtable(qtable: typing.Union[list, tuple], quality: int) -> list
414
409
  │ ├── jpeg_category(data: typing.Any, reverse: bool) -> typing.Any
415
410
  │ ├── jpeg_channel_encoding(matrix: list, quality: int, mode: int) -> tuple
416
411
  │ ├── jpeg_chroma_dc_huff(data: typing.Any, reverse: bool) -> typing.Any
417
412
  │ ├── jpeg_dct8x8(block: typing.Union[list, tuple], reverse: bool) -> list
418
- │ ├── jpeg_decode_pixels(scan_data: bytes, lqtable: list, cqtable: list, width: int, height: int) -> list
419
- │ ├── jpeg_encode_pixels(pixels: typing.Union[list, tuple], quality: int) -> tuple
413
+ │ ├── jpeg_decode_pixels(scan_data: bytes, q_tables: dict, huff_tables: dict, width: int, height: int, yh: int, yv: int, comp_ids: list, comp_info: dict, comp_huff: dict, rst_offsets: list) -> list
414
+ │ ├── jpeg_decode_progressive_pixels(scans_info: Any, q_tables: Any, huff_tables: Any, width: Any, height: Any, yh: Any, yv: Any, comp_ids: Any, comp_info: Any, comp_huff: Any) -> Any
415
+ │ ├── jpeg_encode_pixels(pixels: typing.Union[list, tuple], quality: int, subsampling: str) -> tuple
416
+ │ ├── jpeg_encode_progressive_pixels(pixels: Any, quality: Any, subsampling: Any) -> Any
420
417
  │ ├── jpeg_luma_dc_huff(data: typing.Any, reverse: bool) -> typing.Any
421
418
  │ ├── jpeg_rle_decoding(sequence: typing.Union[list, tuple]) -> list
422
419
  │ ├── jpeg_rle_encoding(sequence: typing.Union[list, tuple]) -> list
423
420
  │ ├── jpeg_split_pixels(matrix: list) -> list
424
421
  │ ├── jpeg_zigzag(data: typing.Union[list, tuple], reverse: bool) -> list
422
+ │ ├── octree_quantize(pixels: Any, num_colors: Any) -> Any
425
423
  │ ├── png_apply_filter(pixels: list, above_pixels: list, filter_type: int) -> list
426
424
  │ ├── png_reverse_filter(pixels: list, above_pixels: list, filter_type: int) -> list
427
425
  │ ├── rgb2ycbcr(weights: typing.Union[list, tuple]) -> tuple
@@ -497,7 +495,6 @@ PyPyNum
497
495
  │ ├── atan(x: typing.Union[int, float]) -> typing.Union[int, float]
498
496
  │ ├── atanh(x: typing.Union[int, float]) -> typing.Union[int, float]
499
497
  │ ├── average(data: typing.Union[list, tuple], weights: typing.Union[list, tuple]) -> float
500
- │ ├── beta(p: typing.Union[int, float], q: typing.Union[int, float]) -> typing.Union[int, float]
501
498
  │ ├── central_moment(data: typing.Union[list, tuple], order: int) -> float
502
499
  │ ├── coeff_det(x: typing.Union[list, tuple], y: typing.Union[list, tuple]) -> typing.Union[int, float, complex]
503
500
  │ ├── combination(n: int, r: int) -> int
@@ -517,9 +514,7 @@ PyPyNum
517
514
  │ ├── erf(x: typing.Union[int, float]) -> float
518
515
  │ ├── exgcd(a: int, b: int) -> tuple
519
516
  │ ├── exp(x: typing.Union[int, float]) -> typing.Union[int, float]
520
- │ ├── factorial(n: int) -> int
521
517
  │ ├── freq(data: typing.Union[list, tuple]) -> dict
522
- │ ├── gamma(alpha: typing.Union[int, float]) -> float
523
518
  │ ├── gcd(args: int) -> int
524
519
  │ ├── geom_mean(numbers: typing.Union[list, tuple]) -> typing.Union[int, float, complex]
525
520
  │ ├── harm_mean(numbers: typing.Union[list, tuple]) -> typing.Union[int, float, complex]
@@ -567,23 +562,23 @@ PyPyNum
567
562
  │ └── zeta(alpha: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
568
563
  ├── matrices
569
564
  │ ├── CLASS
570
- │ │ └── Matrix(pypynum.arrays.Array)/__init__(self: Any, data: Any, check: Any) -> Any
565
+ │ │ └── Matrix(pypynum.arrays.Array)/__init__(self: Any, data: Any, check: Any, dtype: Any) -> Any
571
566
  │ └── FUNCTION
572
- │ ├── cholesky(matrix: pypynum.matrices.Matrix, hermitian: bool) -> pypynum.matrices.Matrix
573
- │ ├── dctmtx(n: int) -> pypynum.matrices.Matrix
574
- │ ├── diag(v: typing.Any, k: int, n: int, m: int) -> typing.Any
567
+ │ ├── cholesky(matrix: pypynum.matrices.Matrix, hermitian: bool, dtype: Any) -> pypynum.matrices.Matrix
568
+ │ ├── dctmtx(n: int, dtype: Any) -> pypynum.matrices.Matrix
569
+ │ ├── diag(v: typing.Any, k: int, n: int, m: int, dtype: Any) -> typing.Any
575
570
  │ ├── diag_indices(n: int, k: int, m: int) -> tuple
576
- │ ├── eigen(matrix: pypynum.matrices.Matrix) -> tuple
577
- │ ├── hessenberg(matrix: pypynum.matrices.Matrix) -> tuple
578
- │ ├── identity(n: int, m: int) -> pypynum.matrices.Matrix
579
- │ ├── lu(matrix: pypynum.matrices.Matrix) -> tuple
580
- │ ├── mat(data: typing.Any) -> pypynum.matrices.Matrix
581
- │ ├── perm_mat(num_rows: int, num_cols: int, row_swaps: typing.Union[list, tuple], col_swaps: typing.Union[list, tuple], rtype: typing.Callable) -> typing.Any
571
+ │ ├── eigen(matrix: pypynum.matrices.Matrix, dtype: Any) -> tuple
572
+ │ ├── hessenberg(matrix: pypynum.matrices.Matrix, dtype: Any) -> tuple
573
+ │ ├── identity(n: int, m: int, dtype: Any) -> pypynum.matrices.Matrix
574
+ │ ├── lu(matrix: pypynum.matrices.Matrix, dtype: Any) -> tuple
575
+ │ ├── mat(data: typing.Any, dtype: Any) -> pypynum.matrices.Matrix
576
+ │ ├── perm_mat(num_rows: int, num_cols: int, row_swaps: typing.Union[list, tuple], col_swaps: typing.Union[list, tuple], rtype: typing.Callable, dtype: Any) -> typing.Any
582
577
  │ ├── perm_mat_indices(num_rows: int, num_cols: int, row_swaps: typing.Union[list, tuple], col_swaps: typing.Union[list, tuple]) -> tuple
583
- │ ├── qr(matrix: pypynum.matrices.Matrix, reduce: bool) -> tuple
584
- │ ├── rank_decomp(matrix: pypynum.matrices.Matrix) -> tuple
585
- │ ├── rotate90(matrix: pypynum.matrices.Matrix, times: int) -> pypynum.matrices.Matrix
586
- │ ├── svd(matrix: pypynum.matrices.Matrix, full: bool, calc_uv: bool) -> tuple
578
+ │ ├── qr(matrix: pypynum.matrices.Matrix, reduce: bool, dtype: Any) -> tuple
579
+ │ ├── rank_decomp(matrix: pypynum.matrices.Matrix, dtype: Any) -> tuple
580
+ │ ├── rotate90(matrix: pypynum.matrices.Matrix, times: int, dtype: Any) -> pypynum.matrices.Matrix
581
+ │ ├── svd(matrix: pypynum.matrices.Matrix, full: bool, calc_uv: bool, dtype: Any) -> tuple
587
582
  │ ├── tril_indices(n: int, k: int, m: int) -> tuple
588
583
  │ └── triu_indices(n: int, k: int, m: int) -> tuple
589
584
  ├── multiprec
@@ -630,13 +625,11 @@ PyPyNum
630
625
  │ └── words2int(words: str) -> int
631
626
  ├── plotting
632
627
  │ ├── CLASS
628
+ │ │ └── Canvas(object)/__init__(self: Any, xlim: tuple, ylim: tuple, resolution: typing.Union[int, float], aspect_ratio: typing.Union[int, float]) -> Any
633
629
  │ └── FUNCTION
634
- │ ├── background(right: typing.Union[int, float], left: typing.Union[int, float], top: typing.Union[int, float], bottom: typing.Union[int, float], complexity: typing.Union[int, float], ratio: typing.Union[int, float], string: bool) -> typing.Union[list, str]
635
- │ ├── binary(function: Any, right: typing.Union[int, float], left: typing.Union[int, float], top: typing.Union[int, float], bottom: typing.Union[int, float], complexity: typing.Union[int, float], ratio: typing.Union[int, float], error: Any, compare: Any, string: bool, basic: list, character: str, data: bool, coloration: Any) -> typing.Union[list, str]
636
- │ ├── c_unary(function: Any, projection: str, right: typing.Union[int, float], left: typing.Union[int, float], top: typing.Union[int, float], bottom: typing.Union[int, float], complexity: typing.Union[int, float], ratio: typing.Union[int, float], string: bool, basic: list, character: str, data: bool, coloration: Any) -> typing.Union[list, str]
637
- │ ├── change(data: typing.Union[list, str]) -> typing.Union[list, str]
638
630
  │ ├── colortext(text: str, rgb: typing.Union[list, tuple]) -> str
639
- └── unary(function: Any, right: typing.Union[int, float], left: typing.Union[int, float], top: typing.Union[int, float], bottom: typing.Union[int, float], complexity: typing.Union[int, float], ratio: typing.Union[int, float], string: bool, basic: list, character: str, data: bool, coloration: Any) -> typing.Union[list, str]
631
+ ├── estimate_lipschitz(func: Any, domain: Any, threshold: Any, n: Any, safety: Any) -> Any
632
+ │ └── safe_eval(func: Any, x: Any, y: Any, threshold: Any) -> Any
640
633
  ├── polys
641
634
  │ ├── CLASS
642
635
  │ │ └── Polynomial(object)/__init__(self: Any, terms: Any) -> Any
@@ -795,22 +788,40 @@ PyPyNum
795
788
  ├── ufuncs
796
789
  │ ├── CLASS
797
790
  │ └── FUNCTION
791
+ │ ├── _beta_scalar(a: Any, b: Any) -> Any
792
+ │ ├── _binomial_scalar(n: Any, k: Any) -> Any
793
+ │ ├── _factorial_scalar(n: Any) -> Any
794
+ │ ├── _lanczos_sum(z: Any) -> Any
795
+ │ ├── _log_sin_pi(z: Any) -> Any
796
+ │ ├── _logbeta_scalar(a: Any, b: Any) -> Any
797
+ │ ├── _logfactorial_scalar(n: Any) -> Any
798
+ │ ├── _pochhammer_scalar(a: Any, n: Any) -> Any
799
+ │ ├── _scalar_gamma(z: Any) -> Any
800
+ │ ├── _scalar_loggamma(z: Any) -> Any
798
801
  │ ├── add(x: Any, y: Any) -> Any
799
- │ ├── apply(a: Any, func: Any, rtype: Any) -> Any
800
- │ ├── base_ufunc(arrays: Any, func: Any, args: Any, rtype: Any) -> Any
802
+ │ ├── apply(a: Any, func: Any, rtype: Any, dtype: Any) -> Any
803
+ │ ├── base_ufunc(arrays: Any, func: Any, args: Any, rtype: Any, dtype: Any) -> Any
804
+ │ ├── beta(a: Any, b: Any) -> Any
805
+ │ ├── binomial(n: Any, k: Any) -> Any
801
806
  │ ├── divide(x: Any, y: Any) -> Any
802
807
  │ ├── equal(x: Any, y: Any) -> Any
808
+ │ ├── factorial(n: Any) -> Any
803
809
  │ ├── floor_divide(x: Any, y: Any) -> Any
810
+ │ ├── gamma(z: Any) -> Any
804
811
  │ ├── greater_equal(x: Any, y: Any) -> Any
805
812
  │ ├── greater_than(x: Any, y: Any) -> Any
806
813
  │ ├── less_equal(x: Any, y: Any) -> Any
807
814
  │ ├── less_than(x: Any, y: Any) -> Any
815
+ │ ├── logbeta(a: Any, b: Any) -> Any
816
+ │ ├── logfactorial(n: Any) -> Any
817
+ │ ├── loggamma(z: Any) -> Any
808
818
  │ ├── modulo(x: Any, y: Any) -> Any
809
819
  │ ├── multiply(x: Any, y: Any) -> Any
810
820
  │ ├── not_equal(x: Any, y: Any) -> Any
821
+ │ ├── pochhammer(a: Any, n: Any) -> Any
811
822
  │ ├── power(x: Any, y: Any, m: Any) -> Any
812
823
  │ ├── subtract(x: Any, y: Any) -> Any
813
- │ └── ufunc_helper(x: Any, y: Any, func: Any) -> Any
824
+ │ └── ufunc_helper(x: Any, y: Any, func: Any, rtype: Any, dtype: Any) -> Any
814
825
  ├── utils
815
826
  │ ├── CLASS
816
827
  │ │ ├── InfIterator(object)/__init__(self: Any, start: typing.Union[int, float, complex], mode: str, common: typing.Union[int, float, complex]) -> Any
@@ -822,162 +833,19 @@ PyPyNum
822
833
  │ └── FUNCTION
823
834
  ├── vectors
824
835
  │ ├── CLASS
825
- │ │ └── Vector(pypynum.arrays.Array)/__init__(self: Any, data: Any, check: Any) -> Any
836
+ │ │ └── Vector(pypynum.arrays.Array)/__init__(self: Any, data: Any, check: Any, dtype: Any) -> Any
826
837
  │ └── FUNCTION
827
838
  │ └── vec(data: Any) -> Any
828
839
  └── zh_cn
829
840
  ├── CLASS
830
841
  └── FUNCTION
831
- ├── Fraction转为Decimal(分数对象: fractions.Fraction, 有效位数: int) -> decimal.Decimal
832
- ├── RC4伪随机生成算法(密钥序列: list) -> Any
833
- ├── RC4初始化密钥调度算法(密钥: bytes) -> list
834
- ├── RC4密码(文本: bytes, 密钥: bytes) -> bytes
835
- ├── ROT13密码(文本: str) -> str
836
- ├── S型函数(x: typing.Union[int, float]) -> typing.Union[int, float]
837
- ├── base64密码(文本: str, 解密: bool) -> str
838
- ├── x对数y乘积(x: float, y: float) -> float
839
- ├── y次方根(被开方数: typing.Union[int, float, complex], 开方数: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
840
- ├── 一维傅里叶变换(数据: Any) -> pypynum.fft.FT1D
841
- ├── 上伽玛(s: typing.Union[int, float, complex], x: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
842
- ├── 上标转整数(上标字符串: str) -> str
843
- ├── 下伽玛(s: typing.Union[int, float, complex], x: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
844
- ├── 下标转整数(下标字符串: str) -> str
845
- ├── 中位数(数据: typing.List[float]) -> float
846
- ├── 中国剩余定理(n: typing.List[int], a: typing.List[int]) -> int
847
- ├── 中心矩(数据: typing.List[float], 阶数: int) -> float
848
- ├── 乘积和(多个数组: typing.List[typing.Any]) -> float
849
- ├── 代替密码(文本: str, 替换映射: dict, 解密: bool) -> str
850
- ├── 众数(数据: typing.List[typing.Any]) -> Any
851
- ├── 伽玛函数(alpha: float) -> float
852
- ├── 余切(x: typing.Union[int, float]) -> typing.Union[int, float]
853
- ├── 余割(x: typing.Union[int, float]) -> typing.Union[int, float]
854
- ├── 余弦(x: typing.Union[int, float]) -> typing.Union[int, float]
855
- ├── 偏度(数据: typing.List[float]) -> float
856
- ├── 全一(形状: Any, 返回类型: Any) -> Any
857
- ├── 全部填充(形状: Any, 填充值: Any, 返回类型: Any) -> Any
858
- ├── 全零(形状: Any, 返回类型: Any) -> Any
859
- ├── 写入(文件: str, 对象: object) -> Any
860
- ├── 几何平均数(数据: typing.List[float]) -> float
861
- ├── 凯撒密码(文本: str, 移位: int, 解密: bool) -> str
862
- ├── 分位数(数据: list, 分位值: float, 插值方法: str, 已排序: bool) -> float
863
- ├── 判定系数(x: typing.List[float], y: typing.List[float]) -> float
864
- ├── 判断平方数(n: int) -> bool
865
- ├── 加权平均(数据: typing.List[float], 权重: typing.List[float]) -> float
866
- ├── 协方差(x: typing.List[float], y: typing.List[float], 自由度: int) -> float
867
- ├── 原根(a: int, 单个: bool) -> typing.Union[int, typing.List[int]]
868
- ├── 原点矩(数据: typing.List[float], 阶数: int) -> float
869
- ├── 双曲余切(x: typing.Union[int, float]) -> typing.Union[int, float]
870
- ├── 双曲余割(x: typing.Union[int, float]) -> typing.Union[int, float]
871
- ├── 双曲余弦(x: typing.Union[int, float]) -> typing.Union[int, float]
872
- ├── 双曲正切(x: typing.Union[int, float]) -> typing.Union[int, float]
873
- ├── 双曲正割(x: typing.Union[int, float]) -> typing.Union[int, float]
874
- ├── 双曲正弦(x: typing.Union[int, float]) -> typing.Union[int, float]
875
- ├── 反余切(x: typing.Union[int, float]) -> typing.Union[int, float]
876
- ├── 反余割(x: typing.Union[int, float]) -> typing.Union[int, float]
877
- ├── 反余弦(x: typing.Union[int, float]) -> typing.Union[int, float]
878
- ├── 反双曲余切(x: typing.Union[int, float]) -> typing.Union[int, float]
879
- ├── 反双曲余割(x: typing.Union[int, float]) -> typing.Union[int, float]
880
- ├── 反双曲余弦(x: typing.Union[int, float]) -> typing.Union[int, float]
881
- ├── 反双曲正切(x: typing.Union[int, float]) -> typing.Union[int, float]
882
- ├── 反双曲正割(x: typing.Union[int, float]) -> typing.Union[int, float]
883
- ├── 反双曲正弦(x: typing.Union[int, float]) -> typing.Union[int, float]
884
- ├── 反正切(x: typing.Union[int, float]) -> typing.Union[int, float]
885
- ├── 反正割(x: typing.Union[int, float]) -> typing.Union[int, float]
886
- ├── 反正弦(x: typing.Union[int, float]) -> typing.Union[int, float]
887
- ├── 可能是平方数(n: int) -> bool
888
- ├── 填充序列(形状: Any, 序列: Any, 重复: Any, 填充: Any, 返回类型: Any) -> Any
889
- ├── 多次方根取整(被开方数: int, 开方数: int) -> int
890
- ├── 多精度余弦(x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
891
- ├── 多精度双曲余弦(x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
892
- ├── 多精度双曲正弦(x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
893
- ├── 多精度反余弦(x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
894
- ├── 多精度反正切(x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
895
- ├── 多精度反正弦(x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
896
- ├── 多精度圆周率(有效位数: int, 方法: str) -> decimal.Decimal
897
- ├── 多精度复数(实部: typing.Union[int, float, str, decimal.Decimal], 虚部: typing.Union[int, float, str, decimal.Decimal], 有效位数: int) -> pypynum.multiprec.MPComplex
898
- ├── 多精度对数(真数: typing.Union[int, float], 底数: typing.Union[int, float], 有效位数: int, 使用内置方法: bool) -> decimal.Decimal
899
- ├── 多精度方位角(y: typing.Union[int, float], x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
900
- ├── 多精度欧拉伽马(有效位数: int) -> decimal.Decimal
901
- ├── 多精度正弦(x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
902
- ├── 多精度自然对数(真数: typing.Union[int, float], 有效位数: int, 使用内置方法: bool) -> decimal.Decimal
903
- ├── 多精度自然常数(有效位数: int, 方法: str) -> decimal.Decimal
904
- ├── 多精度自然指数(指数: typing.Union[int, float], 有效位数: int, 使用内置方法: bool) -> decimal.Decimal
905
- ├── 多精度菲涅耳余弦积分(x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
906
- ├── 多精度菲涅耳正弦积分(x: typing.Union[int, float], 有效位数: int) -> decimal.Decimal
907
- ├── 多精度黄金分割率(有效位数: int, 方法: str) -> decimal.Decimal
908
- ├── 多项式方程(系数: list) -> list
909
- ├── 字符串转整数(字符串: str) -> int
910
- ├── 导数(函数: Any, 参数: float, 步长: float, 额外参数: Any, 额外关键字参数: Any) -> float
911
- ├── 峰度(数据: typing.List[float], 费希尔: bool) -> float
912
- ├── 希尔256密码(文本: bytes, 密钥: list, 解密: bool) -> bytes
913
- ├── 平均数(数据: typing.List[float]) -> float
914
- ├── 平方平均数(数据: typing.List[float]) -> float
915
- ├── 平方根取整(被开方数: int) -> int
916
- ├── 序列滚动(序列: typing.Iterator[typing.Any], 偏移: int) -> typing.Iterator[typing.Any]
917
- ├── 归一化(数据: typing.List[float], 目标: float) -> typing.List[float]
918
- ├── 扩展欧几里得算法(a: int, b: int) -> typing.Tuple[int, int, int]
919
- ├── 排列数(总数: int, 选取数: int) -> int
920
- ├── 数组(数据: list, 检查: bool) -> pypynum.arrays.Array
921
- ├── 整数转上标(标准字符串: str) -> str
922
- ├── 整数转下标(标准字符串: str) -> str
923
- ├── 整数转单词(整数: int) -> str
924
- ├── 整数转罗马数(整数: int, 上划线: bool) -> str
925
- ├── 方差(数据: typing.List[float], 自由度: int) -> float
926
- ├── 普莱费尔密码(文本: str, 密钥: str, 解密: bool) -> str
927
- ├── 最大公约数(args: int) -> int
928
- ├── 最小公倍数(args: int) -> int
929
- ├── 极差(数据: typing.List[float]) -> float
930
- ├── 标准差(数据: typing.List[float], 自由度: int) -> float
931
- ├── 模运算阶(a: int, n: int, b: int) -> int
932
- ├── 欧拉函数(n: int) -> int
933
- ├── 正切(x: typing.Union[int, float]) -> typing.Union[int, float]
934
- ├── 正割(x: typing.Union[int, float]) -> typing.Union[int, float]
935
- ├── 正弦(x: typing.Union[int, float]) -> typing.Union[int, float]
936
- ├── 浮点数转分数(数值: float, 是否带分数: bool, 误差: float) -> tuple
937
- ├── 相关系数(x: typing.List[float], y: typing.List[float]) -> float
938
- ├── 积分(函数: Any, 积分开始: float, 积分结束: float, 积分点数: int, 额外参数: Any, 额外关键字参数: Any) -> float
939
- ├── 积累乘积(数据: typing.List[float]) -> float
940
- ├── 符号函数(x: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
941
- ├── 类似形状全一(数组A: Any, 返回类型: Any) -> Any
942
- ├── 类似形状全零(数组A: Any, 返回类型: Any) -> Any
943
- ├── 类似形状填充(数组A: Any, 填充值: Any, 返回类型: Any) -> Any
944
- ├── 累乘积(序列: typing.List[float]) -> typing.List[float]
945
- ├── 累加和(序列: typing.List[float]) -> typing.List[float]
946
- ├── 线性方程组(左边: list, 右边: list) -> list
947
- ├── 组合数(总数: int, 选取数: int) -> int
948
- ├── 维吉尼亚密码(文本: str, 密钥: str, 解密: bool) -> str
949
- ├── 罗马数转整数(罗马数: str) -> int
950
- ├── 自然对数(真数: typing.Union[int, float]) -> typing.Union[int, float]
951
- ├── 自然指数(指数: typing.Union[int, float]) -> typing.Union[int, float]
952
- ├── 莫尔斯密码(文本: str, 解密: bool) -> str
953
- ├── 解析浮点数字符串(字符串: str) -> tuple
954
- ├── 误差函数(x: typing.Union[int, float]) -> typing.Union[int, float]
955
- ├── 读取(文件: str) -> list
956
- ├── 调和平均数(数据: typing.List[float]) -> float
957
- ├── 贝塔函数(p: float, q: float) -> float
958
- ├── 贝塞尔函数I0(x: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
959
- ├── 贝塞尔函数I1(x: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
960
- ├── 贝塞尔函数Iv(v: typing.Union[int, float], x: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
961
- ├── 贝塞尔函数J0(x: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
962
- ├── 贝塞尔函数J1(x: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
963
- ├── 贝塞尔函数Jv(v: typing.Union[int, float], x: typing.Union[int, float, complex]) -> typing.Union[int, float, complex]
964
- ├── 负一整数次幂(指数: int) -> int
965
- ├── 转为多精度复数(实部: typing.Union[int, float, str, decimal.Decimal, complex, pypynum.multiprec.MPComplex], 虚部: typing.Union[int, float, str, decimal.Decimal], 有效位数: int) -> pypynum.multiprec.MPComplex
966
- ├── 转换为列表(数据: Any) -> list
967
- ├── 转换为数组(数据: Any) -> pypynum.arrays.Array
968
- ├── 连续乘积(下界: int, 上界: int, 函数: typing.Callable) -> float
969
- ├── 连续加和(下界: int, 上界: int, 函数: typing.Callable) -> float
970
- ├── 阶乘函数(n: int) -> int
971
- ├── 阿特巴什密码(文本: str) -> str
972
- ├── 频率统计(数据: typing.List[typing.Any]) -> typing.Dict[typing.Any, int]
973
- └── 黎曼函数(alpha: float) -> float
974
842
  ```
975
843
 
976
844
  ### Code Testing
977
845
 
978
846
  ```python
979
- from pypynum import (arrays, geoms, hypcmpnms, logics, matrices, multiprec, special, vectors,
980
- ciphers, consts, equations, maths, plotting, random, regs, tools)
847
+ from pypynum import (arrays, geoms, hypcmpnms, logics, matrices, multiprec, polys, special, vectors, ciphers, consts,
848
+ equations, maths, plotting, random, regs, tools, ufuncs)
981
849
 
982
850
  ...
983
851
 
@@ -1087,12 +955,38 @@ print("Value of exp(e^2):", exp_e_squared)
1087
955
  """
1088
956
  Modulus of the complex1: 3.064156670102011971734464
1089
957
  Square root of the complex2: 1.630869996965458756791024890326755654659+0.9631646481434200567938527724670041364524i
1090
- Power of complex1 raised to complex2: 0.144632311554759549910373681031-0.17337039786352194417298867399i
958
+ Power of complex1 raised to complex2: 0.144632311554759549910373681032-0.17337039786352194417298867399i
1091
959
  Value of Euler's gamma constant: 0.577215664901532860606512090082402431042159336
1092
960
  Logarithm of 2 (base 10): 0.30102999566398119521373889472449302676818988146211
1093
961
  Value of exp(e^2): 1618.1779919126535017
1094
962
  """
1095
963
 
964
+ p0 = polys.poly([(2, 1), (1, -2), (0, 1)])
965
+ p1 = polys.poly([(1, 1), (0, -1)])
966
+ print(p0)
967
+ print(p1)
968
+ print(p0 + p1)
969
+ print(p0 * p1)
970
+ print(p0.deriv())
971
+ print(p0.integ())
972
+ print(p0.roots())
973
+ print(p0.gcd(p1))
974
+ print(polys.legpoly(3))
975
+ print(polys.chebpoly(3))
976
+
977
+ """
978
+ 1 - 2x + x^2
979
+ -1 + x
980
+ -x + x^2
981
+ -1 + 3x - 3x^2 + x^3
982
+ -2 + 2x
983
+ x - x^2 + 0.3333333333333333x^3
984
+ [0.9999999999999998, 0.9999999999999999]
985
+ -1 + x
986
+ -1.5x + 2.5x^3
987
+ -3x + 4x^3
988
+ """
989
+
1096
990
  print("Bessel Function of the first kind, order 0 at x=1:", special.besselj0(1))
1097
991
  print("Modified Bessel function of the first kind, order 1 at x=1:", special.besseli1(1))
1098
992
  print("Hypergeometric function 0F1 at z=0.5 with b0=1:", special.hyp0f1(1, 0.5))
@@ -1105,7 +999,7 @@ Bessel Function of the first kind, order 0 at x=1: 0.7651976865579666
1105
999
  Modified Bessel function of the first kind, order 1 at x=1: 0.565159103992485
1106
1000
  Hypergeometric function 0F1 at z=0.5 with b0=1: 1.5660829297563503
1107
1001
  Hypergeometric function 1F1 at z=1 with a0=1, b0=1: 2.7182818284590455
1108
- q-Pochhammer Symbol with a=2+1j, q=0.5+0.1j, n=2+1j: (-0.33353429405776575+1.8573191887407854j)
1002
+ q-Pochhammer Symbol with a=2+1j, q=0.5+0.1j, n=2+1j: (-0.3335342940577659+1.8573191887407858j)
1109
1003
  q-Gamma Function at n=2 with q=0.5+0.1j: (0.9999999999999989-4.953510875709033e-16j)
1110
1004
  """
1111
1005
 
@@ -1182,12 +1076,12 @@ print(equations.poly_eq(p))
1182
1076
  print(equations.lin_eq(*m))
1183
1077
 
1184
1078
  """
1185
- [(-1.5615528128088307-6.5209667308287455e-24j), (1.0000000000000007+3.241554513744382e-25j), (2.5615528128088294+4.456233626665941e-24j)]
1186
- [1.6666666666666665, -0.6666666666666666, -0.4444444444444444]
1079
+ [(-1.5615528128088307-3.728101026218476e-24j), (1.0000000000000007+3.2415545137443745e-25j), (2.5615528128088294+7.352235277305158e-24j)]
1080
+ [ 1.6666666666666665 -0.6666666666666666 -0.4444444444444444]
1187
1081
  """
1188
1082
 
1189
1083
  print(maths.cot(consts.pi / 3))
1190
- print(maths.gamma(1.5))
1084
+ print(maths.combination(10, 3))
1191
1085
  print(maths.pi(1, 10, lambda x: x ** 2))
1192
1086
  print(maths.product([2, 3, 5, 7, 11, 13, 17, 19, 23, 29]))
1193
1087
  print(maths.sigma(1, 10, lambda x: x ** 2))
@@ -1195,86 +1089,108 @@ print(maths.var([2, 3, 5, 7, 11, 13, 17, 19, 23, 29]))
1195
1089
 
1196
1090
  """
1197
1091
  0.577350269189626
1198
- 0.886226925452758
1092
+ 120
1199
1093
  13168189440000
1200
1094
  6469693230
1201
1095
  385
1202
1096
  73.29
1203
1097
  """
1204
1098
 
1205
- plt = plotting.unary(lambda x: x ** 2, top=10, bottom=0, character="+")
1206
- print(plt)
1207
- print(plotting.binary(lambda x, y: x ** 2 + y ** 2 - 10, right=10, left=0, compare="<=", basic=plotting.change(plt)))
1208
- print(plotting.c_unary(lambda x: x ** x, right=2, left=-2, top=2, bottom=-2, complexity=20, character="-"))
1099
+ print("Scalar gamma(5):", ufuncs.gamma(5))
1100
+ print("Complex gamma(1+1j):", ufuncs.gamma(1 + 1j))
1101
+ print("Array gamma:", ufuncs.gamma(arrays.array([1, 2, 3, 4, 5])))
1102
+ print("Scalar factorial(10):", ufuncs.factorial(10))
1103
+ print("Array factorial:", ufuncs.factorial(arrays.array([1, 2, 3, 4, 5])))
1104
+ print("Scalar binomial(10, 3):", ufuncs.binomial(10, 3))
1105
+ print("Complex binomial(5+1j, 2+1j):", ufuncs.binomial(5 + 1j, 2 + 1j))
1106
+ print("Array binomial:", ufuncs.binomial(arrays.array([5, 6, 7]), arrays.array([2, 3, 4])))
1107
+ print("Scalar beta(2, 3):", ufuncs.beta(2, 3))
1108
+ print("Complex beta(1+1j, 2+1j):", ufuncs.beta(1 + 1j, 2 + 1j))
1109
+ print("Scalar pochhammer(2, 3):", ufuncs.pochhammer(2, 3))
1110
+ print("Array loggamma:", ufuncs.loggamma(arrays.array([2, 3, 4, 5])))
1111
+
1112
+ """
1113
+ Scalar gamma(5): 24.0
1114
+ Complex gamma(1+1j): (0.49801566811835757-0.15494982830181106j)
1115
+ Array gamma: [ 1.0 1.0 2.0 6.0 24.0]
1116
+ Scalar factorial(10): 3628800.0
1117
+ Array factorial: [ 1.0 2.0 6.0 24.0 120.0]
1118
+ Scalar binomial(10, 3): 119.99999999999987
1119
+ Complex binomial(5+1j, 2+1j): (7.999999999999997+7.6666666666666625j)
1120
+ Array binomial: [10.000000000000002 20.000000000000007 35.00000000000001]
1121
+ Scalar beta(2, 3): 0.08333333333333337
1122
+ Complex beta(1+1j, 2+1j): (-0.10563618646826745-0.3827641582689022j)
1123
+ Scalar pochhammer(2, 3): 24.0
1124
+ Array loggamma: [ 0.0 0.693147180559945 1.7917594692280554 3.178053830347945]
1125
+ """
1126
+
1127
+ canvas = plotting.Canvas(xlim=(0, 10), ylim=(0, 10), resolution=50)
1128
+ canvas.plot(lambda x: x ** 2, marker="+")
1129
+ print(canvas.render())
1130
+ canvas2 = plotting.Canvas(xlim=(-5, 5), ylim=(-5, 5), resolution=60)
1131
+ canvas2.plot_contour(lambda x, y: maths.sin(x ** 2) + maths.sin(y ** 2), threshold=0, marker="*")
1132
+ print(canvas2.render())
1133
+ canvas3 = plotting.Canvas(xlim=(-2, 2), ylim=(-2, 2), resolution=40)
1134
+ canvas3.plot_complex(lambda z: z ** z, marker="-")
1135
+ print(canvas3.render())
1209
1136
 
1210
1137
  """
1211
- 1.00e+01| + +
1138
+ 1.00e+01| +
1212
1139
  |
1213
- | + +
1140
+ | +
1214
1141
  |
1215
- | + +
1216
- | + +
1142
+ | +
1217
1143
  |
1218
- | + +
1144
+ | +
1145
+ | +
1219
1146
  5.00e+00|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1220
- | + +
1221
- | + +
1222
- | + +
1223
- | + +
1224
- | + +
1225
- | + +
1226
- | + +
1227
- | +++ +++
1228
- 0.00e+00|________________________+++________________________
1229
- -5.00e+00 0.00e+00 5.00e+00
1230
- 1.00e+01| + +
1231
- |
1232
- | + +
1147
+ | +
1148
+ | +
1149
+ | +
1233
1150
  |
1234
- |......... + +
1235
- |............. +
1236
- |..............
1237
- |................ +
1238
- 5.00e+00|................_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1239
- |................ +
1240
- |................ +
1241
- |.............. + +
1242
- |............. + +
1243
- |......... + +
1244
- | + +
1245
- | + +
1246
- | +++ +++
1247
- 0.00e+00|________________________+++________________________
1248
- -5.00e+00 0.00e+00 5.00e+00
1249
- 2.00e+00| - - - - - -
1250
- | - - - - - - -
1251
- | - - - - - -
1252
- |- - - - - - -
1253
- | - - - - -- - - - -
1254
- | - - - - - - - - -
1255
- | - - - - -- - --- -- - -- - - - - -
1256
- | - - - -- -- - - - -- - - -
1257
- | - - - - - - - -- - --- --- - - --- -- - -
1258
- | - - - - - -- ----- -- -- --- -- -- --- -- - -
1259
- | - - - ------------ ---- - -- -- - --- - - -
1260
- | - - - - - ----- - -- ----------------------- -- ---- - -- --
1261
- | - - - - - ---- --------------------------------- - - - - - -
1262
- 0.00e+00|_ _ _ _ _ _ _ _-_-_-_-_---- ------------------------------------_-- _ _ _ _ _ _ _
1263
- | - - - - ----------------------------------------- -- - - - -
1264
- | - -- - - -- - - --------------------------------- - - -
1265
- | - - ---- - - -- --------------------- ----- ---- - -- -
1266
- | - - -- --------- -- -- - ----- --- -- - - - -
1267
- | - - - - - - - ---- --- --- --- -- -- --- - - -
1268
- | - - - - - -- -- -- - - -- -- --
1269
- | - - - -- - -- -- - - -- - -
1270
- | - - - - - - - -- - - -- - -
1271
- | - - - - -- -- - - - - -
1272
- | - - - - - - - -
1273
- |- - - - - - - -
1274
- | - - - - - -
1275
- | - - - - -
1276
- -2.00e+00|___________-_________________-___________-_____________________-____________-____
1277
- -2.00e+00 0.00e+00 2.00e+00
1151
+ | +
1152
+ | +
1153
+ | ++
1154
+ | ++
1155
+ 0.00e+00|+++________________________________________________
1156
+ 0.00e+00 5.00e+00 1.00e+01
1157
+ 5.00e+00| *** **** **** ********* ********* **** **** ***
1158
+ |************* ******** *********** ******** *************
1159
+ |*************************************************************
1160
+ |*************************************************************
1161
+ |********************** ************* **********************
1162
+ |*************************************************************
1163
+ | *** **** **** *********************** **** **** ***
1164
+ |*** *** **** ***** ***** **** *** ***
1165
+ |** *** *** *** *** *** *** **
1166
+ |*** * * * ** ** ** ** ** ** * * * ***
1167
+ 0.00e+00|_ * * * _*_ * _*_ _*_ _ _ _ _ * _ _ _ _ _*_ _*_ * _*_ * * * _
1168
+ |*** * * * ** ** ** ** ** ** * * * ***
1169
+ |** *** *** *** *** *** *** **
1170
+ |*** *** **** ***** ***** **** *** ***
1171
+ | *** **** **** *********************** **** **** ***
1172
+ |*************************************************************
1173
+ |********************** ************* **********************
1174
+ |*************************************************************
1175
+ |*************************************************************
1176
+ |************* ******** *********** ******** *************
1177
+ -5.00e+00|__***_****__****____*********___*********____****__****_***__
1178
+ -5.00e+00 0.00e+00 5.00e+00
1179
+ 2.00e+00| - -
1180
+ |- - - -
1181
+ | - - -- - - -
1182
+ | - - -- - -
1183
+ | - ---- ---- -- --
1184
+ | - ---- ------------- ---- - -
1185
+ 0.00e+00|_ _-_ _ _ _-_-------------------- - _ _ _
1186
+ | - - -------------------- -
1187
+ | - ---- ------------- ---- - -
1188
+ | - ---- ---- -- --
1189
+ | - - -- - -
1190
+ | - - -- - - -
1191
+ |- - - -
1192
+ -2.00e+00|________________-___________-____________
1193
+ -2.00e+00 - 0.00e+00 - 2.00e+00
1278
1194
  """
1279
1195
 
1280
1196
  print(random.gauss(0, 1, [2, 3, 4]))
@@ -1283,10 +1199,10 @@ print(random.randint(0, 9, [2, 3, 4]))
1283
1199
  print(random.uniform(0, 9, [2, 3, 4]))
1284
1200
 
1285
1201
  """
1286
- [[[0.19564108603837504, 1.01920370166293, -0.0432622197313817, 1.8767392228517594], [-0.9372140720220945, 0.6455939848661518, 0.06219926062283103, -0.03646501719525719], [-0.6575861228704779, -1.627831653990843, 1.4669927522358261, -2.1082184047042944]], [[-0.4550416369776341, 0.5921202822490813, 0.1393176939653395, -0.1994214479986489], [-0.559257919413219, -1.629764620332396, 0.04658277611512766, 0.20529751771180757], [0.492656546311569, 0.9731757491363898, -0.3281597719355017, -0.6855996837842998]]]
1287
- [[[0.9897608447208633, 0.9091539554606014, 0.839742901348473, 0.7483640950392159], [0.1271954637618754, 0.23914774960655272, 0.6603167703557995, 0.09706202212722614], [0.1020987366479954, 0.16628877700140854, 0.9844464087410161, 0.8213963537473721]], [[0.268434775377716, 0.8021623176316018, 0.48319517625501174, 0.30410149780944096], [0.8970313978138931, 0.9980790184879383, 0.1185467392465952, 0.19570961919567464], [0.08626090792820118, 0.5790211560246683, 0.7475290741004703, 0.8048613204213184]]]
1288
- [[[9, 0, 7, 5], [2, 7, 3, 5], [7, 6, 4, 2]], [[3, 4, 2, 0], [4, 2, 2, 1], [4, 5, 4, 9]]]
1289
- [[[8.067902792666303, 3.1398970785364244, 7.875028237778611, 7.766921948037462], [3.337337214716076, 2.852783099370506, 1.028257336777862, 7.822605535085232], [7.111199916783942, 5.890725764603359, 3.038605829888671, 6.272148674191553]], [[1.076715403659712, 6.806086377982102, 5.699002266942416, 1.1654651363361368], [1.3920577362733448, 8.527352563852686, 2.359964996027981, 5.183071574749471], [7.8250627862940725, 1.6259461468536924, 8.333173856724002, 5.068032713313034]]]
1202
+ [[[-0.1298501384051712, 0.3727699801277098, 0.4166700916648799, -0.7775206291555409], [-0.30014656405123064, -0.16697588134574046, 0.05882136579879377, -1.3702698211987647], [0.6197659045003135, 1.991697529996604, 0.9298444669920536, 0.4422044574065226]], [[-1.0421887750231207, 1.0127464645610977, -0.19182259386341258, -0.005000095322641637], [-0.9920550978825892, -0.10153125400742637, -0.10261269275330637, 0.14806319544548724], [-0.4828220202617309, -1.1860880232637627, -2.0699004045058267, -0.529540752082409]]]
1203
+ [[[0.08655140967833264, 0.6394780807323993, 0.2524438881598683, 0.6474199226773842], [0.5756049932474537, 0.5282380647601147, 0.7316894682109464, 0.019931361163881167], [0.7159100626981946, 0.9890997667800252, 0.07139958022635717, 0.41108364623335725]], [[0.3968800554375378, 0.2991796674738614, 0.6018719095232256, 0.8784654982369239], [0.4686461866479704, 0.590160413315007, 0.8152095317051954, 0.27473954566778025], [0.4442862079226716, 0.9497328028804668, 0.024900765451991935, 0.6874120115820541]]]
1204
+ [[[1, 2, 1, 8], [7, 5, 6, 4], [7, 2, 0, 3]], [[4, 7, 5, 9], [6, 5, 7, 7], [9, 7, 9, 7]]]
1205
+ [[[8.03159946997718, 0.6986351746766797, 6.257222546262797, 0.201624984908367], [1.5010606332093606, 8.490949276137348, 2.801498207055703, 1.6336744885080783], [3.940481233427212, 7.308098296419055, 2.025878540098897, 8.64457791957968]], [[6.154491182321485, 0.7269750156678364, 2.5524453548150046, 0.9963287593978754], [7.233834593868724, 8.238488157751819, 5.011182865628198, 1.7274625227896652], [2.378375506221915, 7.213742910935083, 2.705310847444149, 6.1706150877584705]]]
1290
1206
  """
1291
1207
 
1292
1208
  print(regs.lin_reg(list(range(5)), [2, 4, 6, 7, 8]))
@@ -1305,14 +1221,14 @@ print(tools.frange(0, 3, 0.4))
1305
1221
  print(tools.linspace(0, 2.8, 8))
1306
1222
 
1307
1223
  """
1308
- {<class 'int'>: [1], <class 'float'>: [2.3, 3.14], <class 'complex'>: [(4+5j)], <class 'str'>: ['string'], <class 'type'>: [<class 'list'>, <class 'tuple'>], <class 'bool'>: [True, False], <class 'module'>: [<module 'pypynum.tools' from 'C:\\Users\\Administrator\\PycharmProjects\\pythonProject\\pypynum\\tools.py'>]}
1224
+ {<class 'int'>: [1], <class 'float'>: [2.3, 3.14], <class 'complex'>: [(4+5j)], <class 'str'>: ['string'], <class 'type'>: [<class 'list'>, <class 'tuple'>], <class 'bool'>: [True, False], <class 'module'>: [<module 'pypynum.tools' from 'C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\pypynum\\tools.py'>]}
1309
1225
  ['Python', 6, 'NumPy', <class 'int'>, 'PyPyNum', 9, 'pypynum', True]
1310
1226
  [0.0, 0.4, 0.8, 1.2000000000000002, 1.6, 2.0, 2.4000000000000004, 2.8000000000000003, 3.2]
1311
1227
  [0.0, 0.39999999999999997, 0.7999999999999999, 1.2, 1.5999999999999999, 1.9999999999999998, 2.4, 2.8]
1312
1228
  """
1313
1229
 
1314
- # Tip:
1315
- # The test has been successfully passed and ended.
1316
- # These tests are only part of the functionality of this package.
1317
- # More features need to be explored and tried by yourself!
1230
+ # Tip:
1231
+ # The test has been successfully passed and ended.
1232
+ # These tests are only part of the functionality of this package.
1233
+ # More features need to be explored and tried by yourself!
1318
1234
  ```