From: Alejandro Colomar <alx@kernel.org>
To: "G. Branden Robinson" <g.branden.robinson@gmail.com>
Cc: linux-man@vger.kernel.org, Helge Kreutzmann <debian@helgefjell.de>
Subject: Re: Issue in man page clog.3
Date: Wed, 1 Nov 2023 21:54:35 +0100 [thread overview]
Message-ID: <ZUK7EQC2sOZrYFlZ@debian> (raw)
In-Reply-To: <20231101165632.44yxu5zr5gzbl7po@illithid>
[-- Attachment #1: Type: text/plain, Size: 6526 bytes --]
Hi Branden,
On Wed, Nov 01, 2023 at 11:56:32AM -0500, G. Branden Robinson wrote:
> Hi Alex,
>
> At 2023-11-01T16:00:16+0100, Alejandro Colomar wrote:
> > On Wed, Nov 01, 2023 at 02:02:10PM +0000, Helge Kreutzmann wrote:
> > > Without further ado, the following was found:
> > >
> > > Issue: [-pi,pi] means both -pi and pi are included, this does not
> > > make sense, either one must be out of the interval?
> > >
> > > "The logarithm B<clog>() is the inverse function of the exponential
> > > " "B<cexp>(3). Thus, if I<y\\ =\\ clog(z)>, then I<z\\ =\\
> > > cexp(y)>. The " "imaginary part of I<y> is chosen in the interval
> > > [-pi,pi]."
> >
> > I don't know this function. Please suggest a fix, and CC glibc so
> > that they can review the change.
>
> The complex logarithm is the inverse function of the complex
> exponential, with which you may be familiar if you've taken a course in
> ordinary differential equations.
Yup, I have. This reminds me of some old TODO I had: take a course on
multivariable calculus from a professor I like:
<https://www2.math.upenn.edu/~ghrist/BLUE.html>
The course on single-variable calculus from him was quite good.
<https://www2.math.upenn.edu/~ghrist/calculus.html>
>
> Euler's formula famously relates the trigonometric and exponential
> functions.
>
> exp(i*x) = cos x + i sin x
>
> While the exponential function is aperiodic, that is for y=exp(x), no
> value of y ever occurs more than once for any real x, this is not true
> of a complex x or (equivalently[1]), the complex exponential, or real x
> multiplied by the imaginary unit i as seen in Euler's formula.
>
> (Recall that for any x, sin(x) and cos(x) take on values in the interval
> [-1, 1], and i is a constant imaginary unit that we can interpret as a
> y axis. Thus the complex exponential maps any real x to a point on the
> unit circle.)
e^(ix) is something I can visualize thanks to Euler, and e^(ix + y),
well, not so much, but by combination of e^(ix) and e^y I can
understand, but
>
> In other words, for us to have an inverse function for the complex
> exponential, we must impose a restriction on its range, lest it give us
> an infinite vector of solutions. Geometrically, the complex logarithm
> asks, "given a point on the unit circle, which value of x to the complex
> exponential corresponds to it?" But there is so single answer to that
> question. It is still a useful one to ask, so we can apply a constraint
> on the range of the solution which will make the complex logarithm
> one-to-one.
I can't yet visualize a complex or simple imaginary logarithm. I'm not
so imaginative at the moment. :|
>
> We do a similar thing for the arc sine function. Given a value c in
> [-1, 1], what angle theta has c as its sine? There is an unbounded
> number of answers. If you plot y=sin(x), you will see that y takes on
> every real value from -1 to 1,[2] repeatedly and unendingly.
>
> At any rate, I think this statement:
>
> > > Issue: [-pi,pi] means both -pi and pi are included, this does not
> > > make sense, either one must be out of the interval?
>
> Needs more support. clog(1) = pi and clog(-1) = -pi. The limits of
> machine representation are applicable here, so you'll only ever get
> values "close to" ±pi anyway.
>
> Also, POSIX and the ISO C committee didn't seem troubled by this;
> the same closed interval is issued in POSIX Issue 8 Draft 3, which says
> (in so many words) that the function's definition comes from ISO C99.
>
> Oh, now that I'm about ready to send this, I see Jakub Wilk made the
> same point far more concisely. Who's surprised?
>
> Regards,
> Branden
>
> [1] ...by applying of properties of powers such as x^(ab) = x^a * x^b.
>
> [2] I, uh, don't actually have a proof of the claim "every value". And
> in fact I am unlikely to ever have one. Per Niven's theorem, the
> elementary trigonometric functions never take any rational values
> _except_ 0, ±1, and ±1/2.[3] This may be a startling result to
> insightful students of elementary calculus, as, if one is paying
> attention, one should then wonder why we can say with certainty that
> any of these functions are differentiable, since there are jump
> discontinuities in them--in fact a countably infinite number of
> such discontinuities.[4]
You mean discontinuities in the representation, right? Not in the
function, I presume.
Students should have in mind that a representation cannot be perfect in
some cases. You can ask the same student to measure the rope that
circles a circumference of radius 1; it'll have a hard time with the
ruler. :P
Cheers,
Alex
>
> Since our domain of discourse is computer arithmetic with finite
> precision, it's an academic question, as with sufficient precision
> you can have a sine function that will produce every representable
> value within the function's range[5].
>
> [3] https://en.wikipedia.org/wiki/Niven%27s_theorem
>
> [4] I think it's a set of measure zero but I am now exceeding the limits
> of my training. I need more topology and theory of functions of a
> real variable. And to learn Lebesgue integration.
>
> [5] I don't actually have a proof of that, either. It seems not
> impossible to me that the way IEEE floating point is defined means
> that functions with the properties that trig functions have might
> skip some representable values due to the nonlinearity of that
> representation (the magnitude of error in floating-point math is not
> constant, which is a reason some applications prefer fixed-point).
> An "obvious" possibility is the set of rational values that have a
> precise floating point representation in base 2, so 1/4th, -1/8th,
> and so. I need more numerical analysis, too.[6] Anyway, one
> counterexample disproves my claim, so let's settle for "almost
> every", where we are using "almost" in a hand-wavy manner, not the
> way someone studying the Dirichlet indicator function might.
>
> [6] Obligatory citation of mandatory reading (Goldberg 1991):
>
> https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/02Numerics/Double/paper.pdf
>
> Press et al.'s books on numerical methods ("numerical recipes in
> $LANG") are surprisingly controversial.
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2023-11-01 20:54 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-01 14:02 Issue in man page clog.3 Helge Kreutzmann
2023-11-01 15:00 ` Alejandro Colomar
2023-11-01 15:25 ` Helge Kreutzmann
2023-11-01 16:56 ` G. Branden Robinson
2023-11-01 20:54 ` Alejandro Colomar [this message]
2023-11-01 17:08 ` Alejandro Colomar
2023-11-02 2:38 ` Nikolaos Chatzikonstantinou
2023-11-01 16:15 ` Jakub Wilk
2023-11-01 16:24 ` Helge Kreutzmann
2023-11-01 17:08 ` Alejandro Colomar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZUK7EQC2sOZrYFlZ@debian \
--to=alx@kernel.org \
--cc=debian@helgefjell.de \
--cc=g.branden.robinson@gmail.com \
--cc=linux-man@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox