summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/poormanlog/README
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-02-17 23:01:29 +0000
committerKarl Berry <karl@freefriends.org>2019-02-17 23:01:29 +0000
commit504fe273e928d794b6d3f78a106116142faca8f7 (patch)
tree05717df847eafa0b3bc002a5a6900d5fa3186a45 /Master/texmf-dist/doc/generic/poormanlog/README
parent51cb189341f942c521df0a0f50ff14fcc47259c9 (diff)
poormanlog (17feb19)
git-svn-id: svn://tug.org/texlive/trunk@50044 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/poormanlog/README')
-rw-r--r--Master/texmf-dist/doc/generic/poormanlog/README145
1 files changed, 145 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/poormanlog/README b/Master/texmf-dist/doc/generic/poormanlog/README
new file mode 100644
index 00000000000..fc5f096fdc5
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/poormanlog/README
@@ -0,0 +1,145 @@
+DOCUMENTATION OF POORMANLOG (v0.04, 2019/02/17)
+===========================
+
+(see License at bottom of this file)
+
+The poormanlog.tex file has no dependencies. It provides (expandable)
+macros for base 10 logarithms and powers of 10 with a bit less than 9
+digits of precision (\PMLogZ and \PMPowTen), but its main use will be
+in conjunction with xintexpr.sty, as it provides to the latter
+functions log10() and pow10() and does on-demand modification of the
+power operators ** or ^ to compute according to pow10(y*log10(x)).
+
+This usage will become obsolete when xintexpr will natively implement
+in arbitrary precision the log10() and pow10() functions.
+
+The file can be used with Plain TeX (\input poormanlog) or as a
+regular LaTeX package.
+
+
+Example (with Plain TeX)
+------------------------
+
+ \input xintexpr.sty
+ \input poormanlog.tex
+
+ \xinteval{log10(3.14159265), pow10(2.71828183)}
+
+ \poormanloghack{**}
+
+ \xinteval{3.14159265**2.71828183}
+
+ \poormanloghack{^}
+
+ \xinteval{3.14159265^2.71828183}
+
+ \bye
+
+
+User interface
+--------------
+
+\PMLogZ{#1} expands in two steps.
+
+input: #1 is a mantissa ddddddddd (it may be an f-expandable macro)
+ with exactly 9 digits (the first one must not be zero)
+output: 9 digits xxxxxxxxx such that log10(d.dddddddd) is about 0.xxxxxxxxx
+
+It seems from testing that absolute error is not much more than 1 unit in
+the last place, and result differs from rounded mathematical value by at
+most 1 unit in the 9th digit. (attention not rigorously proven).
+
+\PMPowTen{#1} expands in two steps.
+
+input: #1 is (or expands to) exactly 9 digits ddddddddd representing
+ 0.ddddddddd
+output: 9 digits xxxxxxxxx, first one not zero,
+ such that 10^0.ddddddddd is about x.xxxxxxxx
+
+It seems from testing that absolute error is less than 2 units in
+the last place, and result differs from rounded mathematical value by at
+most 2 units in the 9th digit. (attention not rigorously proven).
+
+\PoorManLogBaseTen{#1}
+
+ in presence of xintfrac this will accept input as recognized by xintfrac
+ and produce the logarithm in base 10 with an error (believed to be at
+ most) about 1 unit in the 9th (i.e. last) fractional digit.
+
+ xintfrac may be loaded before or after.
+
+\PoorManPowerOfTen{#1}
+
+ in presence of package xintfrac this will accept input as recognized by
+ xintfrac and produce the 10^#1 with 9 digits of float precision, with an
+ error (believed to be) at most 2 units in the last place. Of course for
+ this the input must be precise enough to have 9 fractional digits of
+ **fixed point** precision.
+
+ xintfrac may be loaded before or after.
+
+\PoorManPower{#1}{#2}
+
+ in presence of package xintfrac computes #1 to the power #2
+
+ xintfrac may be loaded before or after.
+
+log10()
+
+ the log10() function is made available, if xintexpr.sty is loaded, for
+ usage within \xinteval and \xintfloateval. If a log10() function is
+ already defined in xintexpr it will not be overwritten
+
+ xintexpr may be loaded before or after.
+
+pow10()
+
+ pow10() function is made available, if xintexpr.sty is loaded, for usage
+ within \xinteval and \xintfloateval. If a pow10() function is already
+ defined in xintexpr it will not be overwritten
+
+ xintexpr may be loaded before or after.
+
+modification of ** or ^ operators in \xintexpr and \xintfloatexpr
+
+ \poormanloghack{**}
+ \poormanloghack{^}
+
+ They will now use pow10(y*log10(x)) formula to compute x to the power y
+
+ Of course this means drop of precision, but allows non-integer exponents.
+ (half-integer exponents are already accepted in \xintfloatexpr natively).
+
+ ** xintexpr must have been loaded before **
+
+Example with LaTeX :
+
+ \documentclass{article}
+ \usepackage{xintexpr}
+ \usepackage{poormanlog}% makes log10() and pow10() available
+ \poormanloghack{**} % modifies ** operator
+ \begin{document}
+ \xinteval{3.14159265**2.71828183, log10(3.14159265), pow10(2.71828)}
+ \end{document}
+
+
+LICENSE
+-------
+
+Copyright (C) 2019, Jean-Francois Burnol.
+
+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-Francois Burnol.
+
+This Work consists of files poormanlog.tex, poormanlog.sty and the
+README.