Index of /macros/generic/poormanlog
 Name                    Last modified       Size  Description

Parent Directory        22-Aug-2019 07:27      -
poormanlog.sty          18-Feb-2019 02:13     1k
poormanlog.tex          18-Feb-2019 02:08    14k


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()

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()

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}

-------

This Work may be distributed and/or modified under the conditions of the
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
`