summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/polexpr/README.md
blob: e6a1026e61c94699cbdb36301982b30cebe1df32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Package polexpr README
======================

License
-------

Copyright (C) 2018 Jean-François Burnol

See documentation of package [xint](http://www.ctan.org/pkg/xint) for
contact information.

This Work may be distributed and/or modified under the conditions of the
LaTeX Project Public License version 1.3c. This version of this license
is in

> <http://www.latex-project.org/lppl/lppl-1-3c.txt>

and version 1.3 or later is part of all distributions of LaTeX version
2005/12/01 or later.

This Work has the LPPL maintenance status author-maintained.

The Author of this Work is Jean-François Burnol.

This Work consists of the package file polexpr.sty, this README.md and
the documentation file polexpr.txt.

Abstract
--------

The package provides `\poldef`. This a parser of polynomial expressions
based upon the `\xintdeffunc` mechanism of xintexpr.

The parsed expressions use the operations of algebra (inclusive of
composition of functions) with standard operators, fractional numbers
(possibly in scientific notation) and previously defined polynomial
functions or other constructs as recognized by the `\xintexpr` numerical
parser.

The polynomials are then not only genuine `\xintexpr` (and
`\xintfloatexpr`) numerical functions but additionally are known to the
package via their coefficients. This allows dedicated macros to
implement polynomial algorithmics.

CHANGE LOG
----------

- v0.1 (2018/01/11): initial release. Features:
  - The `\poldef` parser itself,
  - Differentiation and anti-differentiation,
  - Euclidean division and GCDs,
  - Various utilities such as `\PolFromCSV`, `\PolMapCoeffs`,
      `\PolToCSV`, `\PolToExpr`, ...
  Only one-variable polynomials so far.
- v0.2 (2018/01/14)
  - Fix: `"README thinks \numexpr recognizes ^ operator"`.
  - Convert README to reStructuredText markup.
  - Move main documentation from README to separate `polexpr.txt`
      file.
  - Provide `polexpr.html` as obtained via
      [DocUtils](http://docutils.sourceforge.net/docs/index.html)
      `rst2html.py`.
  - Convert README to (CTAN compatible) Markdown markup.
  Due to lack of available time the test suite might not be extensive
  enough. Bug reports are very welcome!
- v0.3 (2018/01/17)
  - bug fixes:
    - the `0.1` `\PolEval` accepted expressions for its second
        argument, but this was removed by mistake at `0.2`.
        Restored.
  - incompatible or breaking changes:
    - `\PolToExpr` now by default uses *descending* powers (it
        also treats differently coefficients equal to 1 or -1.) Use
        `\PolToExpr*` for *ascending* powers.
    - `\PolEval` reduced the output to smallest terms, but as this is
        costly with big fractions and not needed if e.g. wrapped in
        an `\xintRound` or `\xintFloat`, this step has been removed;
        the former meaning is available as `\PolEvalReduced`.
  - new (or newly documented) macros:
    - `\PolTypesetCmd`
    - `\PolTypesetCmdPrefix`,
    - `\PolTypesetMonomialCmd`,
    - `\PolEvalReduced`,
    - `\PolFloatEval`,
    - `\PolToFloatExpr`,
    - `\PolToExprOneTerm`,
    - `\PolToFloatExprOneTerm`,
    - `\PolToExprCmd`,
    - `\PolToFloatExprCmd`,
    - `\PolToExprTermPrefix`,
    - `\PolToExprVar`,
    - `\PolToExprTimes`.
  - improvements:
    - documentation has a table of contents, internal hyperlinks,
        standardized signature notations and added explanations.
    - one can do `\PolLet{g}={f}` or `\PolLet{g}{f}`.
    - `\PolToExpr{f}` is highly customizable.
    - `\poldef` and other defining macros prepare the polynomial
        functions for usage within `\xintthefloatexpr` (or
        `\xintdeffloatvar`). Coefficients are pre-rounded to the
        floating point precision. Indispensible for numerical
        algorithms, as exact fractions, even reduced, quickly become
        very big. See the documentation about how to use the exact
        polynomials also in floating point context.
- v0.3.1 (2018/01/18)
  Fixes two typos in example code included in the documentation.