All of lore.kernel.org
 help / color / mirror / Atom feed
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 --]

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.