• Integral types and own type definitions (was Re: Suggested method for r

    From Janis Papanagnou@21:1/5 to bart on Mon Mar 24 16:37:49 2025
    On 20.03.2025 16:11, bart wrote:
    On 20/03/2025 14:32, Scott Lurndal wrote:
    bart <[email protected]> writes:
    On 20/03/2025 13:36, Scott Lurndal wrote:
    then it's surprisingly rare in source code.

    Long is useless, because Microsoft made the mistake of defining
    'long' as 32-bits on 64-bit architectures, while unix and linux
    define it as 64-bits.

    Unix and Linux define it as 32 bits on 32-bit architectures and 64 bits
    on 64-bit ones.

    That's what I said. Thanks for the confirmation. It doesn't change
    the fact that Microsoft didn't define long as 64-bit on 64-bit
    architectures,
    creating incompatibilities that didn't exist in the 32-bit world
    between the two dominant operating systems.

    Remainder of bart's typical windows-centric complaints elided.


    But your typical anti-Microsoft remarks are fine? Since you called it a 'mistake' to keep 'long' the same between 32/64-bit machines, even
    though both OSes kept 'int' the same.

    Many things (more or less related) come to my mind when reading that.

    Of primary interest here is certainly what the "C" standard defines.
    It's not that enlightening (IMO) what Microsoft did/does (or Linux);
    these are just two [common contemporary] examples.

    When I started with "C" or C++ there were not only 8-bit multiples
    defined for the integral types; there were 9 bit or 36 bit entities
    on some machines. And a 'int' type could be 16 or 32 bit (or 36 bit);
    'int' reflected (sort of) the "machine register size". And the other
    types were woven around; 'short' not larger than 'int', 'long' not
    smaller than 'int'. Optimization considerations made it possible to
    have just a single actual size for all numeric integral types' sizes.

    Unless you are focused with your development on just a single machine architecture you may choose the appropriate types with their specific
    "C" language names.

    In our application cases we needed certainty about actual sizes, so
    (as many others did) we introduced our own types; like the entities
    that you find now defined in "types.h". (Back these days there was
    no "types.h" available.)

    Janis

    [...]

    PS: I'm a bit late here, and a week absence made this thread already
    become a tapeworm (as so often). So later responses on that in this
    thread may be yet unnoticed by me and also got answered already or
    commented on.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to Janis Papanagnou on Mon Mar 24 16:14:05 2025
    Janis Papanagnou <[email protected]> writes:
    On 20.03.2025 16:11, bart wrote:
    On 20/03/2025 14:32, Scott Lurndal wrote:
    bart <[email protected]> writes:
    On 20/03/2025 13:36, Scott Lurndal wrote:
    then it's surprisingly rare in source code.

    Long is useless, because Microsoft made the mistake of defining
    'long' as 32-bits on 64-bit architectures, while unix and linux
    define it as 64-bits.

    Unix and Linux define it as 32 bits on 32-bit architectures and 64 bits >>>> on 64-bit ones.

    That's what I said. Thanks for the confirmation. It doesn't change
    the fact that Microsoft didn't define long as 64-bit on 64-bit
    architectures,
    creating incompatibilities that didn't exist in the 32-bit world
    between the two dominant operating systems.

    Remainder of bart's typical windows-centric complaints elided.


    But your typical anti-Microsoft remarks are fine? Since you called it a
    'mistake' to keep 'long' the same between 32/64-bit machines, even
    though both OSes kept 'int' the same.

    Many things (more or less related) come to my mind when reading that.

    Of primary interest here is certainly what the "C" standard defines.
    It's not that enlightening (IMO) what Microsoft did/does (or Linux);
    these are just two [common contemporary] examples.

    When I started with "C" or C++ there were not only 8-bit multiples
    defined for the integral types; there were 9 bit or 36 bit entities
    on some machines. And a 'int' type could be 16 or 32 bit (or 36 bit);
    'int' reflected (sort of) the "machine register size". And the other
    types were woven around; 'short' not larger than 'int', 'long' not
    smaller than 'int'. Optimization considerations made it possible to
    have just a single actual size for all numeric integral types' sizes.

    Unless you are focused with your development on just a single machine >architecture you may choose the appropriate types with their specific
    "C" language names.

    In our application cases we needed certainty about actual sizes, so
    (as many others did) we introduced our own types; like the entities
    that you find now defined in "types.h". (Back these days there was
    no "types.h" available.)

    When would that have been?

    /work/reference/usl/unix/v7/usr/include/sys/types.h

    stdint.h came much later.

    v7 types.h:

    typedef long daddr_t; /* disk address */
    typedef char * caddr_t; /* core address */
    typedef unsigned int ino_t; /* i-node number */
    typedef long time_t; /* a time */
    typedef int label_t[6]; /* program status */
    typedef int dev_t; /* device code */
    typedef long off_t; /* offset in file */
    /* selectors and constructor for device code */
    #define major(x) (int)(((unsigned)x>>8))
    #define minor(x) (int)(x&0377)
    #define makedev(x,y) (dev_t)((x)<<8|(y))

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Scott Lurndal on Mon Mar 24 17:20:11 2025
    On 24.03.2025 17:14, Scott Lurndal wrote:
    Janis Papanagnou <[email protected]> writes:
    On 20.03.2025 16:11, bart wrote:
    On 20/03/2025 14:32, Scott Lurndal wrote:
    bart <[email protected]> writes:
    On 20/03/2025 13:36, Scott Lurndal wrote:
    then it's surprisingly rare in source code.

    Long is useless, because Microsoft made the mistake of defining
    'long' as 32-bits on 64-bit architectures, while unix and linux
    define it as 64-bits.

    Unix and Linux define it as 32 bits on 32-bit architectures and 64 bits >>>>> on 64-bit ones.

    That's what I said. Thanks for the confirmation. It doesn't change
    the fact that Microsoft didn't define long as 64-bit on 64-bit
    architectures,
    creating incompatibilities that didn't exist in the 32-bit world
    between the two dominant operating systems.

    Remainder of bart's typical windows-centric complaints elided.


    But your typical anti-Microsoft remarks are fine? Since you called it a
    'mistake' to keep 'long' the same between 32/64-bit machines, even
    though both OSes kept 'int' the same.

    Many things (more or less related) come to my mind when reading that.

    Of primary interest here is certainly what the "C" standard defines.
    It's not that enlightening (IMO) what Microsoft did/does (or Linux);
    these are just two [common contemporary] examples.

    When I started with "C" or C++ there were not only 8-bit multiples
    defined for the integral types; there were 9 bit or 36 bit entities
    on some machines. And a 'int' type could be 16 or 32 bit (or 36 bit);
    'int' reflected (sort of) the "machine register size". And the other
    types were woven around; 'short' not larger than 'int', 'long' not
    smaller than 'int'. Optimization considerations made it possible to
    have just a single actual size for all numeric integral types' sizes.

    Unless you are focused with your development on just a single machine
    architecture you may choose the appropriate types with their specific
    "C" language names.

    In our application cases we needed certainty about actual sizes, so
    (as many others did) we introduced our own types; like the entities
    that you find now defined in "types.h". (Back these days there was
    no "types.h" available.)

    When would that have been?

    Oh, right! - It was existing, and we were actually also using it;
    there's a couple types we needed. (Thanks for catching that.)

    I don't think it had all the sized types like 'u_int8_t' defined.
    Or did we all just miss it back these days to have it reimplemented
    like so many did?

    Janis


    /work/reference/usl/unix/v7/usr/include/sys/types.h

    stdint.h came much later.

    v7 types.h:

    typedef long daddr_t; /* disk address */
    typedef char * caddr_t; /* core address */
    typedef unsigned int ino_t; /* i-node number */
    typedef long time_t; /* a time */
    typedef int label_t[6]; /* program status */
    typedef int dev_t; /* device code */
    typedef long off_t; /* offset in file */
    /* selectors and constructor for device code */
    #define major(x) (int)(((unsigned)x>>8))
    #define minor(x) (int)(x&0377)
    #define makedev(x,y) (dev_t)((x)<<8|(y))


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Janis Papanagnou on Mon Mar 24 21:56:24 2025
    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.
    The constant 3.0, for example, has an integral value, but it
    does not have an integer value.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Tim Rentsch on Tue Mar 25 08:45:06 2025
    On 25.03.2025 05:56, Tim Rentsch wrote:
    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm confident,
    though, that most people (obviously you as well) understood the term.

    I understand that the "C" standard may have consistently been using
    another naming. - Frankly, I'm a bit puzzled that general (language independent) terms are considered "incorrect" by the audience here.

    The constant 3.0, for example, has an integral value, but it
    does not have an integer value.

    The literal "3.0" is usually not representing the value of an integral
    [data] type like 'int'.[*]

    (You are speaking about "integral value" here, I was speaking about
    the "integral [data] types". Not sure why you shifted the goalpost.)

    Janis

    [*] For languages that don't have a distinguished integral numeric
    data type, or that do implicit coercion, things may be different of
    course.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Tue Mar 25 09:08:18 2025
    On 25/03/2025 08:45, Janis Papanagnou wrote:
    On 25.03.2025 05:56, Tim Rentsch wrote:
    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm confident,
    though, that most people (obviously you as well) understood the term.

    I understand that the "C" standard may have consistently been using
    another naming. - Frankly, I'm a bit puzzled that general (language independent) terms are considered "incorrect" by the audience here.


    Most of the audience here, I believe, are usually happy when it is
    obvious what you mean. But many here can be very pedantic - that's a
    very useful trait in its place, and annoying when out of place.

    If you stray /too/ far from the C standard terminology, then readers
    have to start making assumptions about what you mean, and then it is
    worth checking or correcting. And then there are terms that can have
    very specific meanings in C that don't quite match up with the word in
    general language, such as "constant" - then it can again be worth the
    effort to be precise.

    I personally can't see this being a case where there is anything to be
    gained from correcting your language. I'm fairly sure that you already
    know that the C terminology is "integer types", or would quickly see
    that in any situation where that were relevant (such as when searching
    in a pdf of the C standards). And I can't imagine anyone misunderstood
    you, or had to waste significant cognitive effort to see what you meant.

    The constant 3.0, for example, has an integral value, but it
    does not have an integer value.

    The literal "3.0" is usually not representing the value of an integral
    [data] type like 'int'.[*]


    Yes. Here, Tim is using "integral" to mean a number (in the
    mathematical sense) that happens to be an integer (in the mathematical
    sense). It is a characteristic of the value, independent of any C type
    used to represent it, and it turns up a fair number of times in the C
    standards (mostly in connection with floating point library functions).

    (You are speaking about "integral value" here, I was speaking about
    the "integral [data] types". Not sure why you shifted the goalpost.)


    I'm guessing Tim is trying to be helpful by showing you the difference
    between the words "integer" and "integral".

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Janis Papanagnou on Tue Mar 25 08:39:04 2025
    On 2025-03-25, Janis Papanagnou <[email protected]> wrote:
    On 25.03.2025 05:56, Tim Rentsch wrote:
    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm confident,
    though, that most people (obviously you as well) understood the term.

    You are 100% correct. You made it clear that you're referring
    to a time /when you started with C/. I remember from past discussions
    that this was sufficiently long ago that it was ISO C90 or ANSI C,
    if not earlier.

    In ISO 9899:1990, we have this:

    6.1.2.5 Types

    [...]

    "The type char, the signed and unsigned integer types. and the
    enumerated types are collectively called integral types."
    ^^^^^^^^

    The integral types were renamed between C90 and C99. However, "integral
    types" remains part of C history. C90 is a still valid, historic and historically significant dialect of C.

    Even today, it is misleading to say that "integral types"
    is an incorrect way to talk about C. It's a terminology that
    has been formally superseded since C90. However, it is a term
    used in computer science and mathematics, and fine for informal
    discussions that don't revolve around language-lawyering.

    The word has two pronunciations in English. When the emphasis is on the
    first syllalble: IN-tgrl, it is a noun which refers to the opposite of a calculus derivative. The integral of x^2 from 0 to 1, etc.
    in-TE-gral is an adjective, which is is a common words---it's an
    integral part of everyday English, meaning indivisible from. In math and
    CS it is used for indicating that some quantity is in Z.

    The C99 and subsquent standards do contain numerous uses of the word
    "integral" in that sense:

    "The ldexp functions multiply a floating-point number by an integral
    power of 2"

    "The modf functions break the argument value into integral and
    fractional parts"

    "When a finite value of real floating type is converted to an integer
    type other than _Bool, the fractional part is discarded (i.e., the
    value is truncated toward zero). If the value of the integral part
    cannot be represented by the integer type, the behavior is
    undefined."

    I suspect they renamed the integral types to integer types in order
    to dissociate the abstract property from the type. The integral
    part coming out of modf is not an integer; it is of type double!

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Kaz Kylheku on Tue Mar 25 03:51:16 2025
    Kaz Kylheku <[email protected]> writes:

    On 2025-03-25, Janis Papanagnou <[email protected]> wrote:

    On 25.03.2025 05:56, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm
    confident, though, that most people (obviously you as well)
    understood the term.

    You are 100% correct. You made it clear that you're referring to
    a time /when you started with C/. I remember from past discussions
    that this was sufficiently long ago that it was ISO C90 or ANSI C,
    if not earlier.

    In ISO 9899:1990, we have this:

    6.1.2.5 Types

    [...]

    "The type char, the signed and unsigned integer types. and the
    enumerated types are collectively called integral types."
    ^^^^^^^^

    The integral types were renamed between C90 and C99. However,
    "integral types" remains part of C history. C90 is a still valid,
    historic and historically significant dialect of C.

    Even today, it is misleading to say that "integral types" is an
    incorrect way to talk about C. It's a terminology that has been
    formally superseded since C90. [...]

    Definitely not. Neither "integer" nor "integral" are terms defined
    by the C standard; rather they are meant to be read in the sense of
    ordinary English. The word "integral" was not superseded by the C99
    standard, but _corrected_ because "integral" is wrong and "integer"
    is right, in the contexts in which those words are used. What was
    done is just like what was done when "one's complement" was changed
    to "ones' complement" - the change was made to reflect correct
    English usage.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to Kaz Kylheku on Tue Mar 25 13:11:10 2025
    On Tue, 25 Mar 2025 08:39:04 -0000 (UTC)
    Kaz Kylheku <[email protected]> wrote:

    On 2025-03-25, Janis Papanagnou <[email protected]>
    wrote:
    On 25.03.2025 05:56, Tim Rentsch wrote:
    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm confident, though, that most people (obviously you as well) understood the
    term.

    You are 100% correct. You made it clear that you're referring
    to a time /when you started with C/. I remember from past discussions
    that this was sufficiently long ago that it was ISO C90 or ANSI C,
    if not earlier.

    In ISO 9899:1990, we have this:

    6.1.2.5 Types

    [...]

    "The type char, the signed and unsigned integer types. and the
    enumerated types are collectively called integral types."
    ^^^^^^^^

    The integral types were renamed between C90 and C99. However,
    "integral types" remains part of C history. C90 is a still valid,
    historic and historically significant dialect of C.

    Even today, it is misleading to say that "integral types"
    is an incorrect way to talk about C. It's a terminology that
    has been formally superseded since C90. However, it is a term
    used in computer science and mathematics, and fine for informal
    discussions that don't revolve around language-lawyering.

    The word has two pronunciations in English. When the emphasis is on
    the first syllalble: IN-tgrl, it is a noun which refers to the
    opposite of a calculus derivative. The integral of x^2 from 0 to 1,
    etc. in-TE-gral is an adjective, which is is a common words---it's an integral part of everyday English, meaning indivisible from. In math
    and CS it is used for indicating that some quantity is in Z.


    Wouldn't the term 'whole numbers' be preferred in everyday English?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Janis Papanagnou on Tue Mar 25 04:55:13 2025
    Janis Papanagnou <[email protected]> writes:

    On 25.03.2025 05:56, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms.

    The problem is that what was written used the word "integral"
    incorrectly.

    I'm confident, though, that most people (obviously you as well)
    understood the term.

    It is likely that I would understand what was meant if someone
    said they wanted to "pay me a complement", but that doesn't
    mean the usage is correct English. "Complement" and "compliment"
    don't mean the same thing.

    I understand that the "C" standard may have consistently been using
    another naming. - Frankly, I'm a bit puzzled that general (language independent) terms are considered "incorrect" by the audience here.

    The words "integer" and "integral" are not specific to programming
    languages. They have well-established meanings in English, and mean
    different things. People who think "integer" and "integral" can be
    used interchangeably are illiterate, at least with respect to this
    one aspect of the English language.

    The constant 3.0, for example, has an integral value, but it
    does not have an integer value.

    The literal "3.0" is usually not representing the value of an
    integral [data] type like 'int'.[*]

    In C the word is constant, not literal; literals are something
    else.

    Again the word "integral" is being used incorrectly. The type int
    is an integer data type. If a real number r has a value not equal
    to zero, then r/r has an integral value, but it is still a real
    number, and not an integer.

    (You are speaking about "integral value" here,

    I was illustrating a correct usage of the word "integral", and also
    showing the distinction between the adjective "integral" and the
    adjective "integer".

    I was speaking about the "integral [data] types". Not sure why
    you shifted the goalpost.)

    I gave an example to illustrate correct usage. If someone thinks
    what I said was shifting some sort of goalpost then they didn't
    understand the point I was making.

    [*] For languages that don't have a distinguished integral numeric
    data type, or that do implicit coercion, things may be different of
    course.

    One more time: it is INTEGER data type, not INTEGRAL data type.
    Certainly it is possible to imagine a floating-point representation
    that was constrained in some way so that any fractional part is
    always zero, but also has NaNs, and such a representation could
    plausibly be called an INTEGRAL data type. Another example is a
    fixed-point data type that has a scale factor of 1024 (so only
    multiples of 1024 are representable): such a data type has INTEGRAL
    values, but isn't suitable for holding INTEGER values.

    The important point here is not that C defines these two terms
    differently, and indeed it doesn't define them at all, but that
    the C standard correctly uses the English word "integer", and
    does not make the mistake of incorrectly using the different
    English word "integral", when "integer data types" are being
    discussed.

    (The C90 standard mistakenly used "integral", but that mistake
    was corrected in C99.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Michael S on Tue Mar 25 05:02:45 2025
    Michael S <[email protected]> writes:

    On Tue, 25 Mar 2025 08:39:04 -0000 (UTC)
    Kaz Kylheku <[email protected]> wrote:

    On 2025-03-25, Janis Papanagnou <[email protected]>
    wrote:

    On 25.03.2025 05:56, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm confident,
    though, that most people (obviously you as well) understood the
    term.

    You are 100% correct. You made it clear that you're referring
    to a time /when you started with C/. I remember from past discussions
    that this was sufficiently long ago that it was ISO C90 or ANSI C,
    if not earlier.

    In ISO 9899:1990, we have this:

    6.1.2.5 Types

    [...]

    "The type char, the signed and unsigned integer types. and the
    enumerated types are collectively called integral types."
    ^^^^^^^^

    The integral types were renamed between C90 and C99. However,
    "integral types" remains part of C history. C90 is a still valid,
    historic and historically significant dialect of C.

    Even today, it is misleading to say that "integral types"
    is an incorrect way to talk about C. It's a terminology that
    has been formally superseded since C90. However, it is a term
    used in computer science and mathematics, and fine for informal
    discussions that don't revolve around language-lawyering.

    The word has two pronunciations in English. When the emphasis is on
    the first syllalble: IN-tgrl, it is a noun which refers to the
    opposite of a calculus derivative. The integral of x^2 from 0 to 1,
    etc. in-TE-gral is an adjective, which is is a common words---it's an
    integral part of everyday English, meaning indivisible from. In math
    and CS it is used for indicating that some quantity is in Z.

    Wouldn't the term 'whole numbers' be preferred in everyday English?

    "Whole numbers" are all non-negative.

    "Integers" include values less than zero.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Tim Rentsch on Tue Mar 25 16:33:56 2025
    On 25/03/2025 13:02, Tim Rentsch wrote:
    Michael S <[email protected]> writes:

    On Tue, 25 Mar 2025 08:39:04 -0000 (UTC)
    Kaz Kylheku <[email protected]> wrote:

    On 2025-03-25, Janis Papanagnou <[email protected]>
    wrote:

    On 25.03.2025 05:56, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm confident,
    though, that most people (obviously you as well) understood the
    term.

    You are 100% correct. You made it clear that you're referring
    to a time /when you started with C/. I remember from past discussions
    that this was sufficiently long ago that it was ISO C90 or ANSI C,
    if not earlier.

    In ISO 9899:1990, we have this:

    6.1.2.5 Types

    [...]

    "The type char, the signed and unsigned integer types. and the
    enumerated types are collectively called integral types."
    ^^^^^^^^

    The integral types were renamed between C90 and C99. However,
    "integral types" remains part of C history. C90 is a still valid,
    historic and historically significant dialect of C.

    Even today, it is misleading to say that "integral types"
    is an incorrect way to talk about C. It's a terminology that
    has been formally superseded since C90. However, it is a term
    used in computer science and mathematics, and fine for informal
    discussions that don't revolve around language-lawyering.

    The word has two pronunciations in English. When the emphasis is on
    the first syllalble: IN-tgrl, it is a noun which refers to the
    opposite of a calculus derivative. The integral of x^2 from 0 to 1,
    etc. in-TE-gral is an adjective, which is is a common words---it's an
    integral part of everyday English, meaning indivisible from. In math
    and CS it is used for indicating that some quantity is in Z.

    Wouldn't the term 'whole numbers' be preferred in everyday English?

    "Whole numbers" are all non-negative.

    "Integers" include values less than zero.

    "Everyday English" does not cover negative numbers at all - in "everyday English", "integer" and "whole number" are basically synonymous and mean
    1, 2, 3, etc.

    But in standard mathematical usage, "whole numbers" are non-negative,
    while "integers" include negative numbers. (There is no solid agreement
    about whether 0 is a "whole number" or not.) And I think it is
    reasonable to expect that people using functions like "modf" are
    familiar with the mathematical usage, so the term "integer" - or the
    adjective variant "integral" - are fine.

    Whether the word "integer" or "integral" is most suitable in a
    particular context, will depend on common usage in related contexts, and probably also vary from place to place (such as between common US usage
    and common British usage). The word "integral" is not used as a noun
    (in the sense of "whole number"), but both words can be used as
    adjectives. So "integer type" and "integral type" would work fine - but "integer type" is the more common usage in computer programming.

    Similarly, it would be fine for the C standards to say "The modf
    functions break the argument value into /integer/ and fractional parts"
    rather than "/integral/ and fractional parts". However, the word
    "integral" is perhaps better here because it is distinct from the use of "integer" as a type, to reduce confusion.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Michael S on Tue Mar 25 16:22:18 2025
    On 2025-03-25, Michael S <[email protected]> wrote:
    [re: "integral"]

    Wouldn't the term 'whole numbers' be preferred in everyday English?

    The everyday adjective "integral" is not used in a mathematical
    sense of denoting integers; e.g. "vitamin C is an integral part
    of a human diet" doesn't mean "whole number part of a human diet".

    Sure, the adjective "whole" serves informally as "integral";
    as in 2 3/4 has a whole part of 2, and a fractional part of 3/4.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to Tim Rentsch on Tue Mar 25 19:09:58 2025
    On Tue, 25 Mar 2025 05:02:45 -0700
    Tim Rentsch <[email protected]> wrote:

    Michael S <[email protected]> writes:

    On Tue, 25 Mar 2025 08:39:04 -0000 (UTC)
    Kaz Kylheku <[email protected]> wrote:

    On 2025-03-25, Janis Papanagnou <[email protected]>
    wrote:

    On 25.03.2025 05:56, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm
    confident, though, that most people (obviously you as well)
    understood the term.

    You are 100% correct. You made it clear that you're referring
    to a time /when you started with C/. I remember from past
    discussions that this was sufficiently long ago that it was ISO
    C90 or ANSI C, if not earlier.

    In ISO 9899:1990, we have this:

    6.1.2.5 Types

    [...]

    "The type char, the signed and unsigned integer types. and the
    enumerated types are collectively called integral types."
    ^^^^^^^^

    The integral types were renamed between C90 and C99. However,
    "integral types" remains part of C history. C90 is a still valid,
    historic and historically significant dialect of C.

    Even today, it is misleading to say that "integral types"
    is an incorrect way to talk about C. It's a terminology that
    has been formally superseded since C90. However, it is a term
    used in computer science and mathematics, and fine for informal
    discussions that don't revolve around language-lawyering.

    The word has two pronunciations in English. When the emphasis is
    on the first syllalble: IN-tgrl, it is a noun which refers to the
    opposite of a calculus derivative. The integral of x^2 from 0 to
    1, etc. in-TE-gral is an adjective, which is is a common
    words---it's an integral part of everyday English, meaning
    indivisible from. In math and CS it is used for indicating that
    some quantity is in Z.

    Wouldn't the term 'whole numbers' be preferred in everyday English?


    "Whole numbers" are all non-negative.

    "Integers" include values less than zero.

    Thank you.
    Sounds like English everyday use differs from two other languages that
    I know relatively well in both of which "whole" numbers include
    negatives.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Michael S on Tue Mar 25 17:34:51 2025
    On 25/03/2025 17:09, Michael S wrote:
    On Tue, 25 Mar 2025 05:02:45 -0700
    Tim Rentsch <[email protected]> wrote:

    Michael S <[email protected]> writes:
    <snip>
    Wouldn't the term 'whole numbers' be preferred in everyday English?


    "Whole numbers" are all non-negative.

    "Integers" include values less than zero.

    Thank you.
    Sounds like English everyday use differs from two other languages that
    I know relatively well in both of which "whole" numbers include
    negatives.

    ...English being one of them.

    Wiktionary offers "integer", and the Cambridge Dictionary "a
    number, such as 1, 3, or 17, that has no fractions and no digits
    after the decimal point".

    The OED gives us "Of a number: equal to one or to a sum
    consisting of one added to itself a certain number of times;
    (also) equal to the negative of such a number or to zero; =
    integral adj. A.4a. Esp. in whole number."

    Wolfram is ambivalent on the matter: "One of the numbers 1, 2, 3,
    ... (OEIS A000027), also called the counting numbers or natural
    numbers. 0 is sometimes included in the list of "whole" numbers
    (Bourbaki 1968, Halmos 1974), but there seems to be no general
    agreement. Some authors also interpret "whole number" to mean "a
    number having fractional part of zero," making the whole numbers
    equivalent to the integers" and goes on to recommend various
    flavours of integer instead.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Harnden@21:1/5 to Kaz Kylheku on Tue Mar 25 18:18:40 2025
    On 25/03/2025 16:22, Kaz Kylheku wrote:
    On 2025-03-25, Michael S <[email protected]> wrote:
    [re: "integral"]

    Wouldn't the term 'whole numbers' be preferred in everyday English?

    The everyday adjective "integral" is not used in a mathematical
    sense of denoting integers; e.g. "vitamin C is an integral part
    of a human diet" doesn't mean "whole number part of a human diet".

    Sure, the adjective "whole" serves informally as "integral";
    as in 2 3/4 has a whole part of 2, and a fractional part of 3/4.


    When I see 'integral', I think of calculus.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Tue Mar 25 19:55:24 2025
    On 25.03.2025 09:08, David Brown wrote:
    On 25/03/2025 08:45, Janis Papanagnou wrote:
    On 25.03.2025 05:56, Tim Rentsch wrote:
    Janis Papanagnou <[email protected]> writes:

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm confident,
    though, that most people (obviously you as well) understood the term.

    I understand that the "C" standard may have consistently been using
    another naming. - Frankly, I'm a bit puzzled that general (language
    independent) terms are considered "incorrect" by the audience here.

    Most of the audience here, I believe, are usually happy when it is
    obvious what you mean. But many here can be very pedantic - that's a
    very useful trait in its place, and annoying when out of place.

    One thing I dislike [in this newsgroup] (but have to accept of course)
    is that even posts that have a simple, isolated topic become tapeworms
    and often contain boring ping-pong discussions. Pedantism is one thing
    that fosters the evolution of such CLC-typical threads. I think it's
    fine if we are speaking about standards, or specific "C" instances.

    But in cases where it's very obviously not specifically related to "C"
    I perceive such distracting responses to be more like trollish than
    useful.

    And in cases where the used terms are clearly understandable (even to
    "C"-only nerds) I'd appreciate if we could focus on the topic.

    If you stray /too/ far from the C standard terminology, [...]

    My strong opinion is that the more general CS topics are best not
    discussed in specific terminology. (I'm sure that mileages vary.)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Michael S on Tue Mar 25 19:55:33 2025
    On 25.03.2025 12:11, Michael S wrote:
    [...]

    Wouldn't the term 'whole numbers' be preferred in everyday English?

    If I speak about numbers I name them so; "numbers", "whole numbers",
    "integer numbers", "real numbers" (not "floating point numbers").
    Sometimes, depending on context, I use the term "scalar". When I'm
    speaking about "integral types" I don't restrict that term to numbers.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Tue Mar 25 20:04:51 2025
    On 25.03.2025 16:33, David Brown wrote:
    On 25/03/2025 13:02, Tim Rentsch wrote:
    Michael S <[email protected]> writes:

    Wouldn't the term 'whole numbers' be preferred in everyday English?

    "Whole numbers" are all non-negative.

    "Integers" include values less than zero.

    "Everyday English" does not cover negative numbers at all - in "everyday English", "integer" and "whole number" are basically synonymous and mean
    1, 2, 3, etc.

    But in standard mathematical usage, "whole numbers" are non-negative,
    while "integers" include negative numbers. (There is no solid agreement about whether 0 is a "whole number" or not.) [...]

    This all is interesting. - As a non-native English speaker that's not
    obvious. - Where I live we have learned

    ℕ (called "natural numbers"): 1, 2, ...

    ℕ with an index 0 (positive/non-negative whole numbers): 0, 1, 2, ...

    ℤ (integer numbers, called "whole numbers"): ..., -1, 0, 1, 2, ...


    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Michael S on Tue Mar 25 19:49:10 2025
    On 2025-03-25, Michael S <[email protected]> wrote:
    Thank you.
    Sounds like English everyday use differs from two other languages that
    I know relatively well in both of which "whole" numbers include
    negatives.

    The formal English of the *mathematics* domain calls Z+ "whole numbers".

    Whole numbers omitting zero are called "natural numbers".

    Both the words "natural" and "whole" are not used in their everyday
    sense.

    (And, arguably, mathematics English also often doesn't use even use
    "number" in the everyday sense!)

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Michael S on Tue Mar 25 12:53:50 2025
    Michael S <[email protected]> writes:

    On Tue, 25 Mar 2025 05:02:45 -0700
    Tim Rentsch <[email protected]> wrote:

    Michael S <[email protected]> writes:

    On Tue, 25 Mar 2025 08:39:04 -0000 (UTC)
    Kaz Kylheku <[email protected]> wrote:

    On 2025-03-25, Janis Papanagnou <[email protected]>
    wrote:

    On 25.03.2025 05:56, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm
    confident, though, that most people (obviously you as well)
    understood the term.

    You are 100% correct. You made it clear that you're referring
    to a time /when you started with C/. I remember from past
    discussions that this was sufficiently long ago that it was ISO
    C90 or ANSI C, if not earlier.

    In ISO 9899:1990, we have this:

    6.1.2.5 Types

    [...]

    "The type char, the signed and unsigned integer types. and the
    enumerated types are collectively called integral types."
    ^^^^^^^^

    The integral types were renamed between C90 and C99. However,
    "integral types" remains part of C history. C90 is a still valid,
    historic and historically significant dialect of C.

    Even today, it is misleading to say that "integral types"
    is an incorrect way to talk about C. It's a terminology that
    has been formally superseded since C90. However, it is a term
    used in computer science and mathematics, and fine for informal
    discussions that don't revolve around language-lawyering.

    The word has two pronunciations in English. When the emphasis is
    on the first syllalble: IN-tgrl, it is a noun which refers to the
    opposite of a calculus derivative. The integral of x^2 from 0 to
    1, etc. in-TE-gral is an adjective, which is is a common
    words---it's an integral part of everyday English, meaning
    indivisible from. In math and CS it is used for indicating that
    some quantity is in Z.

    Wouldn't the term 'whole numbers' be preferred in everyday English?

    "Whole numbers" are all non-negative.

    "Integers" include values less than zero.

    Sounds like English everyday use differs from two other languages that
    I know relatively well in both of which "whole" numbers include
    negatives.

    My native language is US English. I have taken classes
    in two other languages, but don't know either well
    enough to say how "whole number" is understood in them.

    When I was in grade school, I was taught that "natural
    numbers" are numbers like 1, 2, 3, ... Shortly after, and
    probably the same day, I was taught that "whole numbers"
    are the natural numbers plus zero. Someone who is a
    contemporary of mine told me recently that there was a
    mnemonic: "whole" numbers include zero because of the O
    (letter oh) in "whole".

    This question came up recently with another friend, who was
    in grade school (in the US) at roughly the same time that
    I was. Talking with him, I learned that more recent usage,
    at least some more recent usage, uses "whole numbers" for
    integers starting at 1, and "natural numbers" for integers
    starting at 0.

    I have never heard anyone who grew up speaking US English
    use "whole number" to include the possibility of negative
    numbers. In fact I don't remember anyone use "whole number"
    to include negative numbers, no matter what their native
    language is (or native languages are). It occurs to me
    that there is someone I could ask, if I knew how to get
    in touch, and get a reliable answer - the most polyglot
    person I have ever met (more than two dozen languages).
    But I can't do that anytime soon.

    I should note that "whole numbers" was taught as a compound
    noun, in the same way that "natural numbers" was taught as
    a compound noun, and sometimes the phrase "counting numbers"
    was used as a compound noun, meaning the numbers used to
    count, starting at one. Note also that these compound nouns
    are always used in the plural: "natural numbers", "whole
    numbers", and "counting numbers". The leading word is not
    being used as an adjective, but just as a way of indicating
    which set a number belongs to.

    Returning to the original question, the point is that,
    when considered as adjectives, "integer" and "integral"
    mean very different things. The function sin is a
    real-valued function, and consequently sin(pi) yields
    an integral value, but it does not yield an integer
    value. "Integer" used as an adjective is about what
    /kind/ of number is being considered, whereas "integral"
    used as an adjective is about what /value/ is produced.
    An _integer_ expression always yields an _integral_ value,
    but an expression that produces an _integral_ value is not
    necessarily an _integer_ expression - it could be a real
    expression, or even a complex expression, that just happens
    to yield a value that is equal to an integer.

    All of the foregoing represents my best understanding of how
    these words are used, in learned mathematical discourse.
    And I believe the same understanding underlies the decision
    to change "integral" in C90 to "integer" in C99.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Michael S on Tue Mar 25 13:23:25 2025
    Michael S <[email protected]> writes:

    On Tue, 25 Mar 2025 05:02:45 -0700
    Tim Rentsch <[email protected]> wrote:

    Michael S <[email protected]> writes:
    [...]
    Wouldn't the term 'whole numbers' be preferred in everyday English?

    "Whole numbers" are all non-negative.

    "Integers" include values less than zero.

    Sounds like English everyday use differs from two other languages that
    I know relatively well in both of which "whole" numbers include
    negatives.

    Addendum: doing a web search for "whole numbers" turned up several
    pages that gave a definition for the term, and in all cases the
    set of numbers identified included all and only the non-negative
    integers (typical definition was "counting numbers plus zero").

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Tim Rentsch on Tue Mar 25 21:52:13 2025
    On 25/03/2025 11:55, Tim Rentsch wrote:
    Janis Papanagnou <[email protected]> writes:

    On 25.03.2025 05:56, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms.

    The problem is that what was written used the word "integral"
    incorrectly.

    But "integer type" is also a problem. 'Integer' is a noun, not an
    adjective. To modify the noun 'type' you need an adjective that
    means 'of, pertaining to, or being an integer'. The only
    available candidate is 'integral'.

    I'll cheerfully accept "integer type" because, though clumsy,
    it's standardese. But if we're using English it's wrong to reject
    "integral type"; 'adjective noun' is far closer to the spirit of
    the English language than 'noun noun'. At least until such time
    as the backroom boffins come up with a better adjective for 'of,
    pertaining to, or being an integer', I stand with a foot planted
    firmly within each camp.

    <snip>

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Kaz Kylheku on Tue Mar 25 23:14:54 2025
    On 25/03/2025 22:36, Kaz Kylheku wrote:
    On 2025-03-25, Richard Heathfield <[email protected]> wrote:
    On 25/03/2025 11:55, Tim Rentsch wrote:

    <snip>

    The problem is that what was written used the word "integral"
    incorrectly.

    But "integer type" is also a problem. 'Integer' is a noun, not an
    adjective. To modify the noun 'type' you need an adjective that
    means 'of, pertaining to, or being an integer'. The only
    available candidate is 'integral'.

    How can you post that from of the proximity of the birth place
    of the English language?

    The English language features noun phrases (NPs), and in that
    category are found compound nouns. Compound nouns have a head. The head
    is always the rightmost element of the sequence. The other nouns modify
    the head as if they were adjectives.

    But 'integral' modifies 'type' because it /is/ an adjective. Hard
    to see how a charge of 'incorrect' can be justified.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Richard Heathfield on Tue Mar 25 22:36:43 2025
    On 2025-03-25, Richard Heathfield <[email protected]> wrote:
    On 25/03/2025 11:55, Tim Rentsch wrote:
    Janis Papanagnou <[email protected]> writes:

    On 25.03.2025 05:56, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms.

    The problem is that what was written used the word "integral"
    incorrectly.

    But "integer type" is also a problem. 'Integer' is a noun, not an
    adjective. To modify the noun 'type' you need an adjective that
    means 'of, pertaining to, or being an integer'. The only
    available candidate is 'integral'.

    How can you post that from of the proximity of the birth place
    of the English language?

    The English language features noun phrases (NPs), and in that
    category are found compound nouns. Compound nouns have a head. The head
    is always the rightmost element of the sequence. The other nouns modify
    the head as if they were adjectives.

    Example:

    "law school entrance examination results"

    There is a rule that only the head may be plural (as I have it);
    the constituent adjectivized nouns may not be pluralized.

    This noun referes primarily to "results" of some kind.

    What kind? "examination results"

    What sort of test results? "entrance examination results"

    And so on.

    "X Bar theory" hypothesizes that NPs and similar structures
    are all built as binary cells.

    NP
    / \
    _ results
    N
    _ / \
    N examination
    / \
    ... entrance

    The theory hypothesizes that binary construction is expressed
    in all language.

    I'll cheerfully accept "integer type" because, though clumsy,

    So integer type is an NP. "integers type" would be ungrammatical
    because a non-head noun is pluralized; "integer types" is fine.

    Not only do we have nouns that can be adjectives, but
    adjectives can be nouns: "literals", "deliverables", "perishables", "convertibles", "unmentionables", "greens", ...

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Keith Thompson on Tue Mar 25 23:35:35 2025
    On 25.03.2025 21:41, Keith Thompson wrote:
    Janis Papanagnou <[email protected]> writes:
    On 25.03.2025 12:11, Michael S wrote:
    [...]

    Wouldn't the term 'whole numbers' be preferred in everyday English?

    If I speak about numbers I name them so; "numbers", "whole numbers",
    "integer numbers", "real numbers" (not "floating point numbers").
    Sometimes, depending on context, I use the term "scalar". When I'm
    speaking about "integral types" I don't restrict that term to numbers.

    Real numbers and floating-point numbers have different meanings, both in
    C and in general.

    In C, both integer and floating-point types are "real" (as opposed
    to complex or imaginary), though I consider this use of "real" to
    be a bit obscure. [...]

    In my native language (and also what I inferred from some posts here
    about the English language) I see differences between three domains;
    colloquial language, mathematics, and computer terms. These terms are
    not (not completely) coherently defined across the domains it seems.
    The solution is to try to use the words for the discussion from the
    appropriate domain (in both languages). For me there's an additional
    practical fact to keep in mind; that what we call "Ganzzahl" (whole
    numbers) isn't corresponding to what "whole number" means in English,
    as I learned.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to Keith Thompson on Tue Mar 25 19:52:23 2025
    On 3/25/25 16:41, Keith Thompson wrote:
    ...
    Real numbers and floating-point numbers have different meanings, both in
    C and in general.

    One of the key differences is that all floating point numbers are
    rational (except for the special values that mean various kinds of
    infinity, and NaNs). Real numbers include the rational numbers and the irrational ones. Just to confuse the point, some languages use "REAL" to declare floating point variables.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to Keith Thompson on Tue Mar 25 19:55:20 2025
    On 3/25/25 19:38, Keith Thompson wrote:
    Janis Papanagnou <[email protected]> writes:
    [...]
    For me there's an additional
    practical fact to keep in mind; that what we call "Ganzzahl" (whole
    numbers) isn't corresponding to what "whole number" means in English,

    What "whole numbers" means in English doesn't necessarily correspond to
    what "whole numbers" means in English.

    According to the Wikipedia article on integers, "The whole numbers were synonymous with the integers up until the early 1950s In the late 1950s,
    as part of the New Math movement, American elementary school teachers
    began teaching that whole numbers referred to the natural numbers,
    excluding negative numbers, while integer included the negative numbers.
    The whole numbers remain ambiguous to the present day."

    I was born just in time to be taught the New Math in school.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Waldek Hebisch on Wed Mar 26 02:04:40 2025
    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit number
    one need 2N-bit multiplication.

    I just stumbled across your post and above sentence. Do you mean *one* multiplication of 2N bit numbers? - Could you please explain that (by
    an example, or could you provide a reference)?

    (The reason for my question is that for integer divisions of length N
    an old DSP I used required besides shifts effectively N subtractions
    to create the result and modulus; it didn't use any multiplications.)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Waldek Hebisch@21:1/5 to Janis Papanagnou on Wed Mar 26 02:37:26 2025
    Janis Papanagnou <[email protected]> wrote:
    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit number
    one need 2N-bit multiplication.

    I just stumbled across your post and above sentence. Do you mean *one* multiplication of 2N bit numbers? - Could you please explain that (by
    an example, or could you provide a reference)?

    One multiplications with 2N bit result + few other operations
    like shifts and additions. Consider for example:

    unsigned int
    divv(unsigned int a) {
    return a/1234567;
    }

    My gcc-12 at -O generates the following assembly code:

    divv:
    .LFB0:
    .cfi_startproc
    movl %edi, %eax
    movl $3000869427, %edx
    imulq %rdx, %rax
    shrq $32, %rax
    subl %eax, %edi
    shrl %edi
    addl %edi, %eax
    shrl $20, %eax
    ret

    So 1 multiplication, 3 shifts, subtraction and addtion. When
    more bits of multiplication are available one can use smaller
    number of extra operations. For example, when I change
    function above so that argument is 16-bit and divisor is
    12345, the code is:

    divv:
    .LFB0:
    .cfi_startproc
    movzwl %di, %eax
    imull $43489, %eax, %eax
    shrl $29, %eax
    ret

    So just 1 multiplication and 1 shift.

    The idea beside this is quite simple: instead of division we
    multiply by reciprocal. Reciprocal is represented in fixed
    point aritihemtic (so normally there is at least one shift to get
    binary point in right place). Since divisor is fixed reciprocal can
    be precomputed. This works best when there is enough accuracy,
    otherwise one needs to add extra steps. Working out how
    many bits of accuracy are needed is a bit tricky, in particular
    by adding extra operations one can lower needed accuracy.

    (The reason for my question is that for integer divisions of length N
    an old DSP I used required besides shifts effectively N subtractions
    to create the result and modulus; it didn't use any multiplications.)

    Method above is good when you have fast and wide multiplier (compared
    to your numbers). Also there is cost of precomputation,
    to gain divisor must be fixed or at least change slowly.
    If you have varying divisor then one can use Newton method
    (IIUC this is what modern CPU-s use). Shifts and subtractions
    are good when you do not have fast multiplier.

    --
    Waldek Hebisch

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to Janis Papanagnou on Tue Mar 25 22:35:43 2025
    On 3/25/25 21:04, Janis Papanagnou wrote:
    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit number
    one need 2N-bit multiplication.

    I just stumbled across your post and above sentence. Do you mean *one* multiplication of 2N bit numbers?
    I think he meant "one needs 2N-bit multiplication". "one" is a pronoun
    in this context, not a number.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Wed Mar 26 09:18:45 2025
    On 25/03/2025 19:55, Janis Papanagnou wrote:
    On 25.03.2025 09:08, David Brown wrote:
    On 25/03/2025 08:45, Janis Papanagnou wrote:
    On 25.03.2025 05:56, Tim Rentsch wrote:
    Janis Papanagnou <[email protected]> writes:

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms. I'm confident,
    though, that most people (obviously you as well) understood the term.

    I understand that the "C" standard may have consistently been using
    another naming. - Frankly, I'm a bit puzzled that general (language
    independent) terms are considered "incorrect" by the audience here.

    Most of the audience here, I believe, are usually happy when it is
    obvious what you mean. But many here can be very pedantic - that's a
    very useful trait in its place, and annoying when out of place.

    One thing I dislike [in this newsgroup] (but have to accept of course)
    is that even posts that have a simple, isolated topic become tapeworms
    and often contain boring ping-pong discussions.

    A strong sign of this is when there are only two posters (or worse, just
    one) in a thread branch.

    Sometimes a thread branches into unrelated topics, and sometimes it can
    be interesting to at least some people - even if it is off-topic. There
    are some half-dozen contributors in this branch, so it clearly has
    /some/ interest.

    Pedantism is one thing
    that fosters the evolution of such CLC-typical threads. I think it's
    fine if we are speaking about standards, or specific "C" instances.


    Agreed.

    But in cases where it's very obviously not specifically related to "C"
    I perceive such distracting responses to be more like trollish than
    useful.


    That can be the case. I believe Tim intended to be helpful with his
    post - but I don't think he is always a good judge of what is actually
    helpful, or how some of his posts will be received.

    And in cases where the used terms are clearly understandable (even to "C"-only nerds) I'd appreciate if we could focus on the topic.

    If you stray /too/ far from the C standard terminology, [...]

    My strong opinion is that the more general CS topics are best not
    discussed in specific terminology. (I'm sure that mileages vary.)


    That seems reasonable to me. However, unless it is made clear in a
    post, anything written in comp.lang.c should be seen in reference to C specifically, rather than programming in general. Thus if I someone
    here uses the word "function", we assume - unless told otherwise - that
    they are referring to a C function as described in the C standards,
    rather than more general CS usage, or a mathematical function, or a
    wedding party.

    (To be clear - I don't think you did stray from the C standard
    terminology, though you used an outdated term, and I don't think there
    was any way to misinterpret what you meant.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Wed Mar 26 09:23:34 2025
    On 25/03/2025 20:04, Janis Papanagnou wrote:
    On 25.03.2025 16:33, David Brown wrote:
    On 25/03/2025 13:02, Tim Rentsch wrote:
    Michael S <[email protected]> writes:

    Wouldn't the term 'whole numbers' be preferred in everyday English?

    "Whole numbers" are all non-negative.

    "Integers" include values less than zero.

    "Everyday English" does not cover negative numbers at all - in "everyday
    English", "integer" and "whole number" are basically synonymous and mean
    1, 2, 3, etc.

    But in standard mathematical usage, "whole numbers" are non-negative,
    while "integers" include negative numbers. (There is no solid agreement
    about whether 0 is a "whole number" or not.) [...]

    This all is interesting. - As a non-native English speaker that's not obvious. - Where I live we have learned

    ℕ (called "natural numbers"): 1, 2, ...

    ℕ with an index 0 (positive/non-negative whole numbers): 0, 1, 2, ...

    ℤ (integer numbers, called "whole numbers"): ..., -1, 0, 1, 2, ...


    Yes - with the proviso that some mathematicians include 0 with the set
    of natural numbers while some do not, and the term "whole numbers" is
    usually used in a looser sense when it is obvious whether 0 is included
    or not. There is no "blackboard-W" symbol for the "set of whole
    numbers" - it's best to use explicit symbols like ℕ₀ or ℕ+ if it is not clear which "set of natural numbers" you mean.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Michael S on Wed Mar 26 09:50:03 2025
    On 25/03/2025 18:09, Michael S wrote:
    On Tue, 25 Mar 2025 05:02:45 -0700
    Tim Rentsch <[email protected]> wrote:

    Michael S <[email protected]> writes:


    Wouldn't the term 'whole numbers' be preferred in everyday English?


    "Whole numbers" are all non-negative.

    "Integers" include values less than zero.

    Thank you.
    Sounds like English everyday use differs from two other languages that
    I know relatively well in both of which "whole" numbers include
    negatives.


    In the only non-English language that I know well, Norwegian, the direct equivalent of "whole numbers" is used for the mathematical concept of "integer". The equivalent of "natural numbers" matches the term in
    English - the non-negative integers with or without including zero,
    depending on the habits and preferences of the user.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Keith Thompson on Wed Mar 26 09:34:35 2025
    On 25/03/2025 21:31, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    "Everyday English" does not cover negative numbers at all - in
    "everyday English", "integer" and "whole number" are basically
    synonymous and mean 1, 2, 3, etc.

    Perhaps I don't speak everyday English.

    Most people probably rarely use the word "integer".

    Agreed. (To be clear here - I have not asked "most people", so I can't
    claim good statistical evidence for any of this.)

    When they do,
    if they use it correctly, they use it to refer to the set of numbers
    with no fractional part, which can be positive, zero, or negative.
    I've never heard the word "integer" used in a way that excludes
    negative numbers.

    The way I was taught in elementary school:

    The integers are ..., -2, -1, 0, 1, 2 ...
    The natural numbers are 1, 2, ...
    The whole numbers are 0, 1, 2, ...


    Sure. But most people have forgotten such details long ago - negative
    numbers are not part of daily life (except as an indicator of how much
    you owe the bank...). After all, negative numbers are not natural!

    So if you ask someone random "Do you know what an integer is?", a likely response will be "That's a whole number, isn't it? Like 1, 2 or 3 - not something like a half."

    There isn't universal agreement on whether the natural and/or whole
    numbers include 0. Ada, for example, has a subtype Natural whose lower
    bound is 0 (Positive starts at 1), which was very slightly jarring when
    I first encountered it.


    The most relevant for most languages is whether array indices start at 0
    or 1, and I have always understood that it varies - thus you have to
    know where you stand in a given language. Perhaps learning to program
    in BASIC - with its wildly inconsistent variations - wasn't /entirely/
    harmful :-)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to James Kuyper on Wed Mar 26 10:00:40 2025
    On 26/03/2025 00:55, James Kuyper wrote:
    On 3/25/25 19:38, Keith Thompson wrote:
    Janis Papanagnou <[email protected]> writes:
    [...]
    For me there's an additional
    practical fact to keep in mind; that what we call "Ganzzahl" (whole
    numbers) isn't corresponding to what "whole number" means in English,

    What "whole numbers" means in English doesn't necessarily correspond to
    what "whole numbers" means in English.

    According to the Wikipedia article on integers, "The whole numbers were synonymous with the integers up until the early 1950s In the late 1950s,
    as part of the New Math movement, American elementary school teachers
    began teaching that whole numbers referred to the natural numbers,
    excluding negative numbers, while integer included the negative numbers.
    The whole numbers remain ambiguous to the present day."


    That's an interesting historical point, thanks.

    It's also important in such discussions to remember that the USA doesn't
    have a monopoly on the English language, or maths - they can't even
    spell "maths" correctly :-)

    So "everyday English" usage will vary in time and space, as will the definitions people were taught in school (which most "normal" folk will
    have long forgotten anyway).


    (It is entirely reasonable that the "everyday English" usage in the C
    standards be based on US American usage - even though #include <math.h>
    always makes me feel like I'm speaking with a lisp.)

    I was born just in time to be taught the New Math in school.

    These days, of course, kids don't learn about any of this - they just
    learn how to ask ChatGPT about it from their iPad.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Richard Heathfield on Wed Mar 26 10:09:17 2025
    On 26/03/2025 00:14, Richard Heathfield wrote:
    On 25/03/2025 22:36, Kaz Kylheku wrote:
    On 2025-03-25, Richard Heathfield <[email protected]> wrote:
    On 25/03/2025 11:55, Tim Rentsch wrote:

    <snip>

    The problem is that what was written used the word "integral"
    incorrectly.

    But "integer type" is also a problem. 'Integer' is a noun, not an
    adjective. To modify the noun 'type' you need an adjective that
    means 'of, pertaining to, or being an integer'. The only
    available candidate is 'integral'.

    How can you post that from of the proximity of the birth place
    of the English language?

    The English language features noun phrases (NPs), and in that
    category are found compound nouns.  Compound nouns have a head. The head
    is always the rightmost element of the sequence. The other nouns modify
    the head as if they were adjectives.


    Just as all nouns can be verbed, they can also all be adjectived :-)


    But 'integral' modifies 'type' because it /is/ an adjective. Hard to see
    how a charge of 'incorrect' can be justified.


    Kaz' point is not that "integral type" is grammatically incorrect, but
    that "integer type" /is/ grammatically correct. Either could be used.

    Tim's argument that "integral type" is wrong is, I would say - based on
    /my/ everyday English and /my/ mathematical education - invalid. Either "integer type" or "integral type" could be used, but "integer type" is
    the more common usage in most programming languages, and is therefore
    arguably a better choice for the C standards.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to James Kuyper on Wed Mar 26 12:40:08 2025
    On 26/03/2025 03:35, James Kuyper wrote:
    On 3/25/25 21:04, Janis Papanagnou wrote:
    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit number
    one need 2N-bit multiplication.

    I just stumbled across your post and above sentence. Do you mean *one*
    multiplication of 2N bit numbers?
    I think he meant "one needs 2N-bit multiplication". "one" is a pronoun
    in this context, not a number.

    While that is probably correct, coincidentally it is also just /one/ multiplication.

    Roughly speaking, when you want division of "y" by a fixed - i.e.,
    constant value known at compile time - number "x", you can do it by pre-calculating z = 2^n / x and then you implement "y / x" by "y * z /
    2^n". (There's also some stuff to handle correct rounding, especially
    with signed types.)

    So that is one use of multiplications that need longer bit-lengths,
    beyond the size of the numbers you actually want to count (pennies or whatever).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Keith Thompson on Wed Mar 26 12:33:19 2025
    On 26/03/2025 10:59, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    Sure. But most people have forgotten such details long ago - negative
    numbers are not part of daily life (except as an indicator of how much
    you owe the bank...). After all, negative numbers are not natural!

    Most people understand credits and debits.

    They do. But they understand it as "I owe the bank $100" - they don't
    view it as "I have -$100 in my bank account". Even when looking at
    ledgers and accounts, they will primarily see a negative number as an indication of a positive amount moved in the other direction - the minus
    sign is symbolic, with alternatives such as parentheses or red type
    meaning the same thing. When adding up the numbers, they do not see it
    as adding some positive and negative numbers together - they see it as sometimes adding numbers, sometimes subtracting them.

    In almost all everyday situations that appear to use signed numbers,
    people do not consider negative numbers. Rather, they think of
    non-negative numbers with a tag attached for the direction. We might
    write that a stock market change is -2%, but we say and think that it
    has gone down 2% - no negative numbers are involved.

    Even in C (in a desperate attempt to bring us back on topic for the
    group), there are no negative integer constants - merely positive
    integer constants with a unary minus operator applied.


    So if you ask someone random "Do you know what an integer is?", a
    likely response will be "That's a whole number, isn't it? Like 1, 2
    or 3 - not something like a half."

    I suspect that most people who would use the word "integer" without
    being prompted would use it correctly.


    You could be right there, yes.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Waldek Hebisch@21:1/5 to James Kuyper on Wed Mar 26 13:44:47 2025
    James Kuyper <[email protected]> wrote:
    On 3/25/25 21:04, Janis Papanagnou wrote:
    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit number
    one need 2N-bit multiplication.

    I just stumbled across your post and above sentence. Do you mean *one*
    multiplication of 2N bit numbers?
    I think he meant "one needs 2N-bit multiplication". "one" is a pronoun
    in this context, not a number.

    Yes, of course "one" in my text above is a pronoun. I do not know
    how Janis guessed one multiplication, but it is correct guess.
    There is also Newton method which uses multiple multiplications,
    but but it is less useful for software at moderate precision
    and it is _not_ what I meant.

    --
    Waldek Hebisch

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Wed Mar 26 14:47:02 2025
    On 26.03.2025 12:40, David Brown wrote:

    [ substituting a division by multiplication (and some primitives) ]

    Roughly speaking, when you want division of "y" by a fixed - i.e.,
    constant value known at compile time - number "x", you can do it by pre-calculating z = 2^n / x and then you implement "y / x" by "y * z /
    2^n". (There's also some stuff to handle correct rounding, especially
    with signed types.)

    Thanks for the terse explanation; the formulas helped me to detect
    that the constants in Waldek's assembler code are the pre-computed
    reciprocals.

    First I thought that there's a trick to avoid division of non-const expressions.

    Janis

    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Waldek Hebisch on Wed Mar 26 14:42:44 2025
    On 26.03.2025 03:37, Waldek Hebisch wrote:
    Janis Papanagnou <[email protected]> wrote:
    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit number
    one need 2N-bit multiplication.

    I just stumbled across your post and above sentence. Do you mean *one*
    multiplication of 2N bit numbers? - Could you please explain that (by
    an example, or could you provide a reference)?

    One multiplications with 2N bit result + few other operations
    like shifts and additions. Consider for example:

    unsigned int
    divv(unsigned int a) {
    return a/1234567;
    }

    Ah, I suppose you meant that (in case of constant divisors) the
    compiler would just _pre-compute_ the reciprocal value (and can
    then just multiply, of course). - Is that understanding correct?

    Given that I don't know the semantics of the assembler below I'm
    just speculating, but - given you used a constant "1234567" - it
    seems the compiler used a different value ("3000869427") for the multiplication, the reciprocal - right?


    My gcc-12 at -O generates the following assembly code:

    divv:
    .LFB0:
    .cfi_startproc
    movl %edi, %eax
    movl $3000869427, %edx
    imulq %rdx, %rax
    shrq $32, %rax
    subl %eax, %edi
    shrl %edi
    addl %edi, %eax
    shrl $20, %eax
    ret

    So 1 multiplication, 3 shifts, subtraction and addtion. When
    more bits of multiplication are available one can use smaller
    number of extra operations. For example, when I change
    function above so that argument is 16-bit and divisor is
    12345, the code is:

    divv:
    .LFB0:
    .cfi_startproc
    movzwl %di, %eax
    imull $43489, %eax, %eax
    shrl $29, %eax
    ret

    So just 1 multiplication and 1 shift.

    The idea beside this is quite simple: instead of division we
    multiply by reciprocal.

    First I thought that your formulation implies that there's a trick
    where _any_ division a/b could be expressed by a multiplication
    (and some primitive binary operations). - Which would have been cool.

    Reciprocal is represented in fixed
    point aritihemtic (so normally there is at least one shift to get
    binary point in right place). Since divisor is fixed reciprocal can
    be precomputed. This works best when there is enough accuracy,
    otherwise one needs to add extra steps. Working out how
    many bits of accuracy are needed is a bit tricky, in particular
    by adding extra operations one can lower needed accuracy.

    (The reason for my question is that for integer divisions of length N
    an old DSP I used required besides shifts effectively N subtractions
    to create the result and modulus; it didn't use any multiplications.)

    Method above is good when you have fast and wide multiplier (compared
    to your numbers). Also there is cost of precomputation,
    to gain divisor must be fixed or at least change slowly.
    If you have varying divisor then one can use Newton method
    (IIUC this is what modern CPU-s use). Shifts and subtractions
    are good when you do not have fast multiplier.

    Actually the (meanwhile very old) DSP I used (in the mid 1980's) had
    a fast multiplier; + and - were done in one cycle, * (asymptotically)
    also one cycle. The interesting part was that the [general] non-const
    division was "constructed" (as opposed to pre-existing as an opcode).
    All operations (roughly) required just one cycle but the division; it
    was constructed by a 'repeat' opcode for the next opcode. So if you
    had written something like LACC addr1 ; RPTK 16 ; SUBC addr2 that
    would have divided the data *addr1 / *addr2 (informally written)
    providing both results, the division and the modulus.

    Out of interest I've implemented the logic in "C" to demonstrate it
    (the variable names reflect the DSP terminology and the sizes of the
    data words (16) and accumulator (32), only the '<< 15' is originally
    part of the 'subc' opcode/"C" function (but shifts did not cost any
    extra cycles, they've been done in passing, sort of):

    void subc (int32_t * acc, int32_t * dma)
    {
    int32_t acc_out;
    if ((acc_out = *acc - *dma) >= 0)
    *acc = acc_out << 1 | 1;
    else
    *acc <<= 1;
    }
    ...
    int16_t z = 47;
    int16_t n = 6;
    // calculate "z div n" and "z mod n"
    int32_t acc = z;
    int32_t dma = n << 15;

    for (int i=1; i<=16; i++)
    subc (&acc, &dma);

    printf ("%d div %d = %d\n", z, n, acc&0xffff);
    printf ("%d mod %d = %d\n", z, n, acc>>16);

    I considered that DSP feature quite interesting. That was from a time
    where the usual processors required something like 4 cycles for + and
    -, around 16 cycles for *, and 80 cycles for the division. (Numbers
    are just faint memories from an 68k CPU, so correct me if I'm wrong.)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to David Brown on Wed Mar 26 16:01:42 2025
    On Wed, 26 Mar 2025 10:00:40 +0100
    David Brown <[email protected]> wrote:

    On 26/03/2025 00:55, James Kuyper wrote:
    On 3/25/25 19:38, Keith Thompson wrote:
    Janis Papanagnou <[email protected]> writes:
    [...]
    For me there's an
    additional practical fact to keep in mind; that what we call
    "Ganzzahl" (whole numbers) isn't corresponding to what "whole
    number" means in English,

    What "whole numbers" means in English doesn't necessarily
    correspond to what "whole numbers" means in English.

    According to the Wikipedia article on integers, "The whole numbers
    were synonymous with the integers up until the early 1950s In the
    late 1950s, as part of the New Math movement, American elementary
    school teachers began teaching that whole numbers referred to the
    natural numbers, excluding negative numbers, while integer included
    the negative numbers. The whole numbers remain ambiguous to the
    present day."

    That's an interesting historical point, thanks.

    It's also important in such discussions to remember that the USA
    doesn't have a monopoly on the English language, or maths - they
    can't even spell "maths" correctly :-)

    So "everyday English" usage will vary in time and space, as will the definitions people were taught in school (which most "normal" folk
    will have long forgotten anyway).


    But your school in UK taught you the same meaning of 'whole numbers' as
    James's school in US. So, it seems, US and UK had common 'New Math'
    movement that supposedly didn't affect majority of non-English-speaking countries.


    (It is entirely reasonable that the "everyday English" usage in the C standards be based on US American usage - even though #include
    <math.h> always makes me feel like I'm speaking with a lisp.)

    I was born just in time to be taught the New Math in school.

    These days, of course, kids don't learn about any of this - they just
    learn how to ask ChatGPT about it from their iPad.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Michael S on Wed Mar 26 14:45:50 2025
    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole numbers' as James's school in US.

    What makes you think so? Mine certainly didn't. This thread was
    the first time in my life I've ever encountered the rather
    peculiar notion that whole numbers exclude negatives. Now that I
    /have/ encountered that notion, I see no compelling reason to
    endorse it.

    For me the important part about whole numbers is not their sign
    but the part that makes them whole --- the absence of a remainder
    after division by 1.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Wed Mar 26 15:58:59 2025
    On 26.03.2025 09:34, David Brown wrote:

    Sure. But most people have forgotten such details long ago - negative numbers are not part of daily life (except as an indicator of how much
    you owe the bank...). [...]

    LOL :-)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Wed Mar 26 15:59:48 2025
    On 26.03.2025 12:33, David Brown wrote:
    On 26/03/2025 10:59, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    Sure. But most people have forgotten such details long ago - negative
    numbers are not part of daily life (except as an indicator of how much
    you owe the bank...). After all, negative numbers are not natural!

    Most people understand credits and debits.

    They do. But they understand it as "I owe the bank $100" - they don't
    view it as "I have -$100 in my bank account". [...]

    I don't know about contemporary bookkeeping but in my youth they had
    two columns with non-negative numbers for both sides, the credits and
    debits. Nowadays, e.g. in online banking, we see signed numbers.


    Even in C (in a desperate attempt to bring us back on topic for the
    group), there are no negative integer constants - merely positive
    integer constants with a unary minus operator applied.

    Is that so? (Harmlessly asking.) - I mean, if I write int x = -5;
    does it matter (in "C") whether its parsed as <integer number> or
    <negation> <positive number> ?

    I faintly recall a discussion, I think in context of exponentiation.

    But I don't want to (re-)open a can of words...

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Waldek Hebisch on Wed Mar 26 16:19:21 2025
    On 26.03.2025 14:44, Waldek Hebisch wrote:
    James Kuyper <[email protected]> wrote:
    On 3/25/25 21:04, Janis Papanagnou wrote:
    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit number
    one need 2N-bit multiplication.

    I just stumbled across your post and above sentence. Do you mean *one*
    multiplication of 2N bit numbers?
    I think he meant "one needs 2N-bit multiplication". "one" is a pronoun
    in this context, not a number.

    Yes, of course "one" in my text above is a pronoun. I do not know
    how Janis guessed one multiplication, but it is correct guess.

    The "one" was clear ("one need", "you need", "we need", etc.).

    What was unclear was whether there's indeed only one multiplication
    necessary. The "2N-bit multiplication" would also have been clear
    from its writing; meaning "[one] multiplication of 2N bit entities".

    But I couldn't imagine that a _general_ [non-const] division a/b
    could be done with only one multiplication. That's were I speculated
    whether you may have meant, say, "two N-bit multiplications" or some
    such. - That's why I was asking for confirmation. - Later I saw that
    you meant just a special case division a/c (with a _constant_ c),
    which of course can be pre-computed.

    Janis

    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Michael S on Wed Mar 26 08:55:26 2025
    Michael S <[email protected]> writes:

    On Wed, 26 Mar 2025 14:45:50 +0000
    Richard Heathfield <[email protected]> wrote:

    On 26/03/2025 14:01, Michael S wrote:

    But your school in UK taught you the same meaning of 'whole
    numbers' as James's school in US.

    What makes you think so?

    It seems, he said it himself in one of replies.

    Mine certainly didn't.

    But you are significantly older than David. Not sure about James.

    Unfortunately the sub-conversation has turned into a debate
    about what the phrase "whole numbers" does or should mean.
    The important point is that different people understand it
    differently, and consequently "whole numbers" is not a good
    substitute for the word "integers".

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to Richard Heathfield on Wed Mar 26 17:16:12 2025
    On Wed, 26 Mar 2025 14:45:50 +0000
    Richard Heathfield <[email protected]> wrote:

    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole
    numbers' as James's school in US.

    What makes you think so?

    It seems, he said it himself in one of replies.

    Mine certainly didn't.

    But you are significantly older than David. Not sure about James.

    This thread was
    the first time in my life I've ever encountered the rather
    peculiar notion that whole numbers exclude negatives. Now that I
    /have/ encountered that notion, I see no compelling reason to
    endorse it.

    For me the important part about whole numbers is not their sign
    but the part that makes them whole --- the absence of a remainder
    after division by 1.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Wed Mar 26 17:37:04 2025
    On 26/03/2025 15:59, Janis Papanagnou wrote:
    On 26.03.2025 12:33, David Brown wrote:


    Even in C (in a desperate attempt to bring us back on topic for the
    group), there are no negative integer constants - merely positive
    integer constants with a unary minus operator applied.

    Is that so? (Harmlessly asking.) - I mean, if I write int x = -5;
    does it matter (in "C") whether its parsed as <integer number> or
    <negation> <positive number> ?


    I can't think off-hand of any situation in which it would matter, but
    maybe others can. (It's also worth noting that there were changes in
    the way integer constants were typed between C90 and C99 - though
    usually the differences are harmless.)

    I faintly recall a discussion, I think in context of exponentiation.

    But I don't want to (re-)open a can of words...


    Too late for that!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Michael S on Wed Mar 26 17:45:40 2025
    On 26/03/2025 16:16, Michael S wrote:
    On Wed, 26 Mar 2025 14:45:50 +0000
    Richard Heathfield <[email protected]> wrote:

    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole
    numbers' as James's school in US.

    What makes you think so?

    It seems, he said it himself in one of replies.

    Now I am doubting myself. Still, I am pretty sure that I didn't say
    anything like that, because I don't remember being taught about a
    definition of the term "whole numbers" at school at all. (I /do/
    remember learning it from other sources while I was at school - I was
    the weird kid who read maths books in my spare time.)


    Mine certainly didn't.

    But you are significantly older than David. Not sure about James.


    It would have been around 1984 when I first learned about terms such as
    "the set of integers" in a rigorous manner.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Richard Heathfield on Wed Mar 26 17:40:05 2025
    On 26/03/2025 15:45, Richard Heathfield wrote:
    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole numbers' as
    James's school in US.

    What makes you think so? Mine certainly didn't. This thread was the
    first time in my life I've ever encountered the rather peculiar notion
    that whole numbers exclude negatives. Now that I /have/ encountered that notion, I see no compelling reason to endorse it.


    Yes, but didn't your school education predate Georg Cantor and the
    development of set theory? :-)

    For me the important part about whole numbers is not their sign but the
    part that makes them whole --- the absence of a remainder after division
    by 1.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Michael S on Wed Mar 26 17:32:49 2025
    On 26/03/2025 15:01, Michael S wrote:
    On Wed, 26 Mar 2025 10:00:40 +0100
    David Brown <[email protected]> wrote:

    On 26/03/2025 00:55, James Kuyper wrote:
    On 3/25/25 19:38, Keith Thompson wrote:
    Janis Papanagnou <[email protected]> writes:
    [...]
    For me there's an
    additional practical fact to keep in mind; that what we call
    "Ganzzahl" (whole numbers) isn't corresponding to what "whole
    number" means in English,

    What "whole numbers" means in English doesn't necessarily
    correspond to what "whole numbers" means in English.

    According to the Wikipedia article on integers, "The whole numbers
    were synonymous with the integers up until the early 1950s In the
    late 1950s, as part of the New Math movement, American elementary
    school teachers began teaching that whole numbers referred to the
    natural numbers, excluding negative numbers, while integer included
    the negative numbers. The whole numbers remain ambiguous to the
    present day."

    That's an interesting historical point, thanks.

    It's also important in such discussions to remember that the USA
    doesn't have a monopoly on the English language, or maths - they
    can't even spell "maths" correctly :-)

    So "everyday English" usage will vary in time and space, as will the
    definitions people were taught in school (which most "normal" folk
    will have long forgotten anyway).


    But your school in UK taught you the same meaning of 'whole numbers' as James's school in US.

    I haven't said any such thing - I cannot remember if my school taught
    the term "whole number" at all, or whether or not we included 0 in
    "natural numbers". (Usually I would not include 0 as a natural number
    without specifying it, but I can't tell you where that preference came
    from.)

    What I have said is that the term "whole number" in English usually
    means non-negative integers. But I don't think it is entirely
    consistent, and I don't know what is taught in schools in the UK or how
    that might have changed or how consistent it is. (Note also that there
    is no UK-wide education standard - education in Scotland, along with the
    legal system and religion, has always been completely separate in
    Scotland despite the union of the crowns and the union of the parliaments.)

    I am confident that the term "integer" is used consistently for the set
    of positive, zero and negative integers throughout schools in the UK,
    using the blackboard-Z symbol. But I have no idea when they
    standardised on this, or whether there was a specific standardisation
    effort or just a gradual change.


    So, it seems, US and UK had common 'New Math'
    movement that supposedly didn't affect majority of non-English-speaking countries.

    That also does not follow at all.

    It is certainly /plausible/ that the countries cooperated on this. It
    is far more likely that there was no connection at all.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Wed Mar 26 17:55:13 2025
    On 26/03/2025 14:47, Janis Papanagnou wrote:
    On 26.03.2025 12:40, David Brown wrote:

    [ substituting a division by multiplication (and some primitives) ]

    Roughly speaking, when you want division of "y" by a fixed - i.e.,
    constant value known at compile time - number "x", you can do it by
    pre-calculating z = 2^n / x and then you implement "y / x" by "y * z /
    2^n". (There's also some stuff to handle correct rounding, especially
    with signed types.)

    Thanks for the terse explanation; the formulas helped me to detect
    that the constants in Waldek's assembler code are the pre-computed reciprocals.

    First I thought that there's a trick to avoid division of non-const expressions.


    For non-constant divisors, it's a bit more difficult! If you are going
    to use the same divisor several times, it can be worth computing the
    scaled reciprocal, so that you only have one hard operation. I believe
    that hardware floating point units do that anyway for division.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Michael S on Wed Mar 26 17:19:25 2025
    On 26/03/2025 15:16, Michael S wrote:
    On Wed, 26 Mar 2025 14:45:50 +0000
    Richard Heathfield <[email protected]> wrote:

    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole
    numbers' as James's school in US.

    What makes you think so?

    It seems, he said it himself in one of replies.

    James said that David's school in the UK taught David the same
    meaning of 'whole numbers' as James's school in US? Interesting
    claim. Perhaps James would like to confirm or deny, but I wasn't
    even aware that James knew which schools David attended.

    Mine certainly didn't.

    But you are significantly older than David. Not sure about James.

    David doesn't recall his school defining "whole numbers" for him.
    Do you have evidence to support your claim about David's schooling?

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Keith Thompson on Wed Mar 26 17:36:51 2025
    On 2025-03-26, Keith Thompson <[email protected]> wrote:
    David Brown <[email protected]> writes:
    [...]
    Sure. But most people have forgotten such details long ago - negative
    numbers are not part of daily life (except as an indicator of how much
    you owe the bank...). After all, negative numbers are not natural!

    Most people understand credits and debits.

    It might well be that more people understand negative numbers
    better than debits and credits.

    When money is added to an account, to know whether that's a debit or
    credit you have to know which side of the ledger it is on.

    Accounting is a lot simpler when all the accounts just add to zero and
    the liability-like accounts, including owner's equity, have negative
    balances.

    The debit-credit system in the English speaking world is a deliberate obfuscation of negative numbers, which increases the number of
    situations in which people think they need to pay an accountant.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to David Brown on Wed Mar 26 17:25:12 2025
    On 26/03/2025 16:40, David Brown wrote:
    On 26/03/2025 15:45, Richard Heathfield wrote:
    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole
    numbers' as
    James's school in US.

    What makes you think so? Mine certainly didn't. This thread was
    the first time in my life I've ever encountered the rather
    peculiar notion that whole numbers exclude negatives. Now that
    I /have/ encountered that notion, I see no compelling reason to
    endorse it.


    Yes, but didn't your school education predate Georg Cantor and
    the development of set theory?  :-)

    Sedi ad pedes Euleri, ut numeros meos discerem, integros et aliter.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to David Brown on Wed Mar 26 17:22:07 2025
    On 26/03/2025 16:45, David Brown wrote:
    On 26/03/2025 16:16, Michael S wrote:
    On Wed, 26 Mar 2025 14:45:50 +0000
    Richard Heathfield <[email protected]> wrote:

    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole
    numbers' as James's school in US.

    What makes you think so?

    It seems, he said it himself in one of replies.

    Now I am doubting myself.  Still, I am pretty sure that I didn't
    say anything like that, because I don't remember being taught
    about a definition of the term "whole numbers" at school at all.
    (I /do/ remember learning it from other sources while I was at
    school - I was the weird kid who read maths books in my spare time.)

    Mine certainly didn't.

    But you are significantly older than David. Not sure about James.


    It would have been around 1984 when I first learned about terms
    such as "the set of integers" in a rigorous manner.

    For me, it would have been about 1884, but then I'm a tad older
    than thee, sirrah.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to David Brown on Wed Mar 26 19:36:57 2025
    On Wed, 26 Mar 2025 12:40:08 +0100
    David Brown <[email protected]> wrote:

    On 26/03/2025 03:35, James Kuyper wrote:
    On 3/25/25 21:04, Janis Papanagnou wrote:
    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit
    number one need 2N-bit multiplication.

    I just stumbled across your post and above sentence. Do you mean
    *one* multiplication of 2N bit numbers?
    I think he meant "one needs 2N-bit multiplication". "one" is a
    pronoun in this context, not a number.

    While that is probably correct, coincidentally it is also just /one/ multiplication.

    Roughly speaking, when you want division of "y" by a fixed - i.e.,
    constant value known at compile time - number "x", you can do it by pre-calculating z = 2^n / x and then you implement "y / x" by "y * z
    / 2^n". (There's also some stuff to handle correct rounding,
    especially with signed types.)

    So that is one use of multiplications that need longer bit-lengths,
    beyond the size of the numbers you actually want to count (pennies or whatever).


    Strictly speaking, n-bit reciprocal is insufficient for arbitrary
    n-bit [unsigned] integer division. For approximately 10% of divisors
    one needs either n+1 bits of reciprocal or an adjustment step after multiplication.
    In cases like those compilers that implement division by constant via multiplication by reciprocal are emulating multiplication by (n+1)-bit reciprocal via multiplication by n-bit number followed by ether
    subtraction or addition and shifts.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to David Brown on Wed Mar 26 17:58:24 2025
    On 2025-03-26, David Brown <[email protected]> wrote:
    On 26/03/2025 10:59, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    Sure. But most people have forgotten such details long ago - negative
    numbers are not part of daily life (except as an indicator of how much
    you owe the bank...). After all, negative numbers are not natural!

    Most people understand credits and debits.

    They do. But they understand it as "I owe the bank $100" - they don't
    view it as "I have -$100 in my bank account". Even when looking at

    They do if you have an overdraft. If you have a formal loan, then there
    will be some positively running account representing it.

    (At least in the English-speaking word, where we have debits and credits
    which reverse polarity between asset versus liability type accounts.)

    It would definitely make sense for a loan account to have a negative
    balance which increases toward zero as it is paid off.

    Then the value of your account portfolio in that bank could be
    calculated simply by adding your accounts together.

    Moreover, when you move money from some chequing account to the mortgage account, it would be a transaction which contains values that add to
    zero: Chequing account -300; loan account +300. Otherwise it has to be: Checquing account: debit 300; loan account credit 300. Which means that
    a "credit" is subtractive to a loan account rather than additive.
    Under this system, you never see a negative unless some account is
    overdrawn.

    I have an accounting system for self-employment activities which works
    this way rather than the debit-credit system.

    The debit credit system is confusing.

    For mortgaging, I deal with a bank which gets something wrong on
    statements: Would you believe it, they add together the value of the
    checking account, and the mortgqge account, both being positive. Then
    they call that the value of your account! E.g. if you have a $5,000
    balance in the checquing account, and $50,000 in the mortgage account,
    they call that a value of $55,000. I wrote them an e-mail and they acknowledged this, but nothing was done; typical bureaucracy.
    They would not have made that mistake with -55,000 and 5,000.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Rosario19@21:1/5 to Janis Papanagnou on Wed Mar 26 19:01:12 2025
    On Wed, 26 Mar 2025 02:04:40 +0100, Janis Papanagnou wrote:

    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit number
    one need 2N-bit multiplication.

    pheraps that means a/b where a is in a big set, is more heavy to
    calculate that a* 1/b where a is in a big set of numbers

    I just stumbled across your post and above sentence. Do you mean *one* >multiplication of 2N bit numbers? - Could you please explain that (by
    an example, or could you provide a reference)?

    (The reason for my question is that for integer divisions of length N
    an old DSP I used required besides shifts effectively N subtractions
    to create the result and modulus; it didn't use any multiplications.)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to Kaz Kylheku on Wed Mar 26 14:20:36 2025
    On 3/26/25 13:58, Kaz Kylheku wrote:
    ...
    The debit credit system is confusing.

    It can be. But like most things, if you get a lot of practice with it,
    it becomes clearer. There's actually good reasons why it was designed
    that way, and if you become very familiar with accounting, you'll gain a clearer understanding of why that is the case.

    For mortgaging, I deal with a bank which gets something wrong on
    statements: Would you believe it, they add together the value of the
    checking account, and the mortgqge account, both being positive. Then
    they call that the value of your account! E.g. if you have a $5,000
    balance in the checquing account, and $50,000 in the mortgage account,
    they call that a value of $55,000. I wrote them an e-mail and they acknowledged this, but nothing was done; typical bureaucracy.
    They would not have made that mistake with -55,000 and 5,000.

    In the contexts where I've seen them do this, it was not an error. They determine whether or not you qualify for certain benefits by calculating
    the sum of your asset account balances and debit account balances,.
    That's because they're not trying to calculate your net worth - they're
    trying to quantify how big of a customer of theirs you are. You're a big customer if you have a large credit balance in your credit accounts, and
    also if you have a large asset balance in your debit accounts, and
    you're an even bigger customer if you have both, even if that leaves
    your net worth at nearly $0.

    Look at it this way: a rich man qualifies for a $1B loan, and deposits
    the money in a new checking account with the same bank. The total value
    of his two accounts is $0. Would that be an accurate representation of
    how important of a customer he is, or would $2B be a more accurate representation? Keep in mind that his financial status is good enough to justify giving him that loan.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to David Brown on Wed Mar 26 14:38:21 2025
    On 3/26/25 12:40, David Brown wrote:
    ...
    Yes, but didn't your school education predate Georg Cantor and the development of set theory? :-)

    The biggest difference between the "New Math" and the old math is that
    under the old math, the only people who even heard about set theory were
    people taking graduate level courses in math. Under the new math, the
    same concepts were taught starting in Kindergarten. I can attest that
    it's perfectly feasible to learn those concepts at that age, it wasn't
    till much later that I learned that older people considered set theory
    to be too esoteric for young kids to be bothered with.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to David Brown on Wed Mar 26 14:31:36 2025
    On 3/26/25 05:00, David Brown wrote:
    On 26/03/2025 00:55, James Kuyper wrote:
    ...
    I was born just in time to be taught the New Math in school.

    These days, of course, kids don't learn about any of this - they just
    learn how to ask ChatGPT about it from their iPad.

    I'm currently raising two 9-year olds (yes, they were born when I was 56
    - I've been late for almost everything in my life, including my marriage
    - I hope that includes my funeral). They use ChromeBooks supplied by the
    school district, and as far as I know they've made no use of ChatGPT.

    The biggest difference between the way they were taught math and the way
    I was taught is something called a "number bond". The concept emphasizes
    that 6 and 4+2 are the same quantity, so 5 is "bonded" to the
    combination of 4 and 2. In other words, the concept is used to
    encapsulate the distributive property. They attach as much or more
    importance to that fact as I would attach to the fact that 6 and 2*3 are
    the same quantity. I have no idea whether this is a good idea, just as
    my parents had no idea whether the "New Math" was a good idea.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Janis Papanagnou on Wed Mar 26 18:49:12 2025
    On 2025-03-26, Janis Papanagnou <[email protected]> wrote:
    On 22.03.2025 15:07, Waldek Hebisch wrote:

    Actually, to do fast division of N-bit number by fixed N-bit number
    one need 2N-bit multiplication.

    I just stumbled across your post and above sentence. Do you mean *one* multiplication of 2N bit numbers? - Could you please explain that (by
    an example, or could you provide a reference)?

    When an integer divisor is a constant expression like 17,
    we can calculate the division x/17 using multiplication itself.

    It's easier to ask AI than to work this out from scratch.

    The AI I choose for this task is GCC:

    Given the prompt:

    unsigned div17(unsigned x)
    {
    return x/17;
    }

    The GCC language model version 14 generates this Motorola 68K assembly:

    div17:
    move.l 4(%sp),%d0
    mulu.l #4042322161,%d1:%d0
    move.l %d1,%d0
    lsr.l #4,%d0
    rts

    The argument value is on the stack at 4(%sp), and gets loaded into
    d0. This undergoes a 64 bit multiplication into the pair of registers
    d1:d0.

    This is then effectively shifted right by 36 bits to truncate it
    to integer. This is because the result is a rational integer
    represented in fixed point, where the low 36 bits are fractional.

    What is the magic constant 4042322161? It's this, rounded off:

    1> (/ (expt 2 36) 17)
    4042322160.94118

    Basically 1/17 scaled by 2^36. Why 36 is that the result fits into 32 bits; we don't need to represent the initial zeros past the binary point.

    So if we multiply by this representation of 1/17 and then remove
    the scale, we get a result divided by 17.

    Obviously, this is not practical for a non-constant divisor, because
    it takes more calculation to obtain the multiplication coefficient
    than to just use the division instruction.

    P.S. I used unsigned because the int version resulted in more
    complicated code, with details that distract from the basic idea.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to David Brown on Wed Mar 26 18:52:49 2025
    On 2025-03-26, David Brown <[email protected]> wrote:
    On 26/03/2025 15:45, Richard Heathfield wrote:
    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole numbers' as
    James's school in US.

    What makes you think so? Mine certainly didn't. This thread was the
    first time in my life I've ever encountered the rather peculiar notion
    that whole numbers exclude negatives. Now that I /have/ encountered that
    notion, I see no compelling reason to endorse it.


    Yes, but didn't your school education predate Georg Cantor and the development of set theory? :-)

    Not just Georg Cantor but the Gregorian Chant.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to James Kuyper on Wed Mar 26 21:33:09 2025
    On 26/03/2025 19:31, James Kuyper wrote:
    On 3/26/25 05:00, David Brown wrote:
    On 26/03/2025 00:55, James Kuyper wrote:
    ...
    I was born just in time to be taught the New Math in school.

    These days, of course, kids don't learn about any of this - they just
    learn how to ask ChatGPT about it from their iPad.

    I'm currently raising two 9-year olds (yes, they were born when I was 56
    - I've been late for almost everything in my life, including my marriage
    - I hope that includes my funeral). They use ChromeBooks supplied by the school district, and as far as I know they've made no use of ChatGPT.


    Here, schools vary - some have pads of some sort, others have
    Chromebooks. IMHO the Chromebooks are a vastly better choice.

    Appropriate use of AI is now being taught in schools, but I don't know
    when they start (my youngest is 17).

    The biggest difference between the way they were taught math and the way
    I was taught is something called a "number bond". The concept emphasizes
    that 6 and 4+2 are the same quantity, so 5 is "bonded" to the
    combination of 4 and 2. In other words, the concept is used to
    encapsulate the distributive property. They attach as much or more
    importance to that fact as I would attach to the fact that 6 and 2*3 are
    the same quantity. I have no idea whether this is a good idea, just as
    my parents had no idea whether the "New Math" was a good idea.

    I don't remember any of my kids being taught that kind of thing. I
    vaguely recall the idea of "ten-friends" - so 4 is a "ten-friend" of 6.
    Getting used to these makes adding up a big quicker.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Richard Heathfield on Wed Mar 26 21:27:39 2025
    On 26/03/2025 18:25, Richard Heathfield wrote:
    On 26/03/2025 16:40, David Brown wrote:
    On 26/03/2025 15:45, Richard Heathfield wrote:
    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole numbers' as >>>> James's school in US.

    What makes you think so? Mine certainly didn't. This thread was the
    first time in my life I've ever encountered the rather peculiar
    notion that whole numbers exclude negatives. Now that I /have/
    encountered that notion, I see no compelling reason to endorse it.


    Yes, but didn't your school education predate Georg Cantor and the
    development of set theory?  :-)

    Sedi ad pedes Euleri, ut numeros meos discerem, integros et aliter.


    If you had used the original Greek, rather than Latin, I'd have been
    /really/ impressed!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to David Brown on Wed Mar 26 20:34:09 2025
    On 26/03/2025 20:27, David Brown wrote:
    On 26/03/2025 18:25, Richard Heathfield wrote:
    On 26/03/2025 16:40, David Brown wrote:
    On 26/03/2025 15:45, Richard Heathfield wrote:
    On 26/03/2025 14:01, Michael S wrote:
    But your school in UK taught you the same meaning of 'whole
    numbers' as
    James's school in US.

    What makes you think so? Mine certainly didn't. This thread
    was the first time in my life I've ever encountered the
    rather peculiar notion that whole numbers exclude negatives.
    Now that I /have/ encountered that notion, I see no
    compelling reason to endorse it.


    Yes, but didn't your school education predate Georg Cantor and
    the development of set theory?  :-)

    Sedi ad pedes Euleri, ut numeros meos discerem, integros et
    aliter.


    If you had used the original Greek, rather than Latin, I'd have
    been /really/ impressed!

    Quidquid Latine dictum sit, altum videtur.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Keith Thompson on Wed Mar 26 21:04:30 2025
    On 26/03/2025 20:50, Keith Thompson wrote:
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

    Nonne Latine in schola didicisti?

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Keith Thompson on Wed Mar 26 21:18:27 2025
    On 26/03/2025 21:12, Keith Thompson wrote:

    "Vix didici Lingua Anglica"?

    Close enough.

    Estne tempus hoc filo mori?

    morituri te salutant.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to Richard Heathfield on Wed Mar 26 23:22:24 2025
    On Wed, 26 Mar 2025 21:18:27 +0000
    Richard Heathfield <[email protected]> wrote:

    On 26/03/2025 21:12, Keith Thompson wrote:

    "Vix didici Lingua Anglica"?

    Close enough.

    Estne tempus hoc filo mori?

    morituri te salutant.


    Quo usque tandem abutere patientia nostra?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Keith Thompson on Wed Mar 26 22:53:28 2025
    On 26.03.2025 20:38, Keith Thompson wrote:
    Janis Papanagnou <[email protected]> writes:
    On 26.03.2025 12:33, David Brown wrote:
    [...]
    Even in C (in a desperate attempt to bring us back on topic for the
    group), there are no negative integer constants - merely positive
    integer constants with a unary minus operator applied.

    Is that so? (Harmlessly asking.) - I mean, if I write int x = -5;
    does it matter (in "C") whether its parsed as <integer number> or
    <negation> <positive number> ?

    If -5 were a single token (an integer constant), then 6-5 would be an
    integer constant 6 followed by an integer constant -5, a syntax error.

    This is generally not true; that depends on the syntax rules. It is
    perfectly fine to have rules for 2-ary addition and subtraction and
    have also negative (and positive) literals or expressions with unary
    plus and minus operators.

    Disclaimer: As usual I'm not speaking about any peculiarity that "C"
    may (or may not) have defined in its standard, but generally.

    Janis

    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Waldek Hebisch@21:1/5 to David Brown on Wed Mar 26 22:29:00 2025
    David Brown <[email protected]> wrote:
    On 26/03/2025 15:01, Michael S wrote:
    On Wed, 26 Mar 2025 10:00:40 +0100
    David Brown <[email protected]> wrote:

    On 26/03/2025 00:55, James Kuyper wrote:
    On 3/25/25 19:38, Keith Thompson wrote:
    Janis Papanagnou <[email protected]> writes:
    [...]
    For me there's an
    additional practical fact to keep in mind; that what we call
    "Ganzzahl" (whole numbers) isn't corresponding to what "whole
    number" means in English,

    What "whole numbers" means in English doesn't necessarily
    correspond to what "whole numbers" means in English.

    According to the Wikipedia article on integers, "The whole numbers
    were synonymous with the integers up until the early 1950s In the
    late 1950s, as part of the New Math movement, American elementary
    school teachers began teaching that whole numbers referred to the
    natural numbers, excluding negative numbers, while integer included
    the negative numbers. The whole numbers remain ambiguous to the
    present day."

    That's an interesting historical point, thanks.

    It's also important in such discussions to remember that the USA
    doesn't have a monopoly on the English language, or maths - they
    can't even spell "maths" correctly :-)

    So "everyday English" usage will vary in time and space, as will the
    definitions people were taught in school (which most "normal" folk
    will have long forgotten anyway).


    But your school in UK taught you the same meaning of 'whole numbers' as
    James's school in US.

    I haven't said any such thing - I cannot remember if my school taught
    the term "whole number" at all, or whether or not we included 0 in
    "natural numbers". (Usually I would not include 0 as a natural number without specifying it, but I can't tell you where that preference came
    from.)

    What I have said is that the term "whole number" in English usually
    means non-negative integers. But I don't think it is entirely
    consistent, and I don't know what is taught in schools in the UK or how
    that might have changed or how consistent it is. (Note also that there
    is no UK-wide education standard - education in Scotland, along with the legal system and religion, has always been completely separate in
    Scotland despite the union of the crowns and the union of the parliaments.)

    I am confident that the term "integer" is used consistently for the set
    of positive, zero and negative integers throughout schools in the UK,
    using the blackboard-Z symbol. But I have no idea when they
    standardised on this, or whether there was a specific standardisation
    effort or just a gradual change.


    So, it seems, US and UK had common 'New Math'
    movement that supposedly didn't affect majority of non-English-speaking
    countries.

    That also does not follow at all.

    It is certainly /plausible/ that the countries cooperated on this. It
    is far more likely that there was no connection at all.

    If you take "whole number", translate to my language (Polish) and
    back to English you will get "integer". Simply, we have only
    one term, that is "liczba całkowita" where "liczba" is English
    number and "całkowita" means in this context means "whole".
    Reasonably competent translator knows that this translated
    to English gives "integer".

    So, this "whole number" thing is completely bizzare from
    international point of view.

    I head that French were very much engaged in 'New Math', but
    I think that instead of messing with "whole number" they
    tried to get more advanced concepts into primary education.

    In my country the 'New Math' movement was weaker, or rather
    less visible. They did not try to cram a lot of advanced
    concepts at primary level. We had sets and a little of
    formal logic at start of secondary school (9-th year of
    education).

    --
    Waldek Hebisch

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to Janis Papanagnou on Wed Mar 26 14:07:05 2025
    On 3/26/25 10:59, Janis Papanagnou wrote:
    On 26.03.2025 12:33, David Brown wrote:
    ...
    Even in C (in a desperate attempt to bring us back on topic for the
    group), there are no negative integer constants - merely positive
    integer constants with a unary minus operator applied.

    Is that so? (Harmlessly asking.) - I mean, if I write int x = -5;
    does it matter (in "C") whether its parsed as <integer number> or
    <negation> <positive number> ?

    It does make a difference in some contexts, but not in that one.

    The problem I remember best is that if, for instance, the minimum
    integer that can be represented by an int has the value -32768, then the integer literal 32768 represents a value too big to be represented as an integer, so it has the type 'long int' rather than 'int'. As result,
    since the expression -32768 is parsed as the unary - operator applied to
    32768, that expression also has the type 'long int'. That makes it
    unsuitable as the #definition of INT_MIN. A popular alternative is to
    #define INT_MIN as (-32767-1).
    The same issue applies to INT_MIN regardless of what value it has, I
    chose 16 bits only to reduce typing.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Keith Thompson on Thu Mar 27 10:11:57 2025
    On 26/03/2025 23:15, Keith Thompson wrote:
    Janis Papanagnou <[email protected]> writes:
    On 26.03.2025 20:38, Keith Thompson wrote:
    [...]
    If -5 were a single token (an integer constant), then 6-5 would be an
    integer constant 6 followed by an integer constant -5, a syntax error.

    This is generally not true; that depends on the syntax rules. It is
    perfectly fine to have rules for 2-ary addition and subtraction and
    have also negative (and positive) literals or expressions with unary
    plus and minus operators.

    Disclaimer: As usual I'm not speaking about any peculiarity that "C"
    may (or may not) have defined in its standard, but generally.

    I suppose it would be possible to define a language syntax that makes
    -5 a single token and still parses 6-5 as (literal 6, binary-minus, literal-5).

    I'm sure a language could have syntax and parsing rules that interpreted
    the minus sign as binary minus in "x-y", unary minus in "-x", and part
    of the literal in "-5" if it is not preceded by an operand that has a
    suitable subtraction operation. But I think the rules would get fairly complicated - much more so than the rules of C syntax and parsing.

    It would be a lot easier in a language that required spaces to separate
    tokens. Then it would be simple to distinguish "x - y" and "-5" - the
    binary subtraction operator is always space-minus-space, while in a
    literal, the minus sign has no space on its right. "- 5" would then be
    parsed as unary minus applied to the literal "5", and "-x" would be a
    single token unrelated to "x". This is how it is handled in Forth -
    there, "-5" is a single token for the literal value of minus five
    (unless some silly bugger has redefined -5 to something else...). If
    you want to apply unary minus to 5, you write "5 NEGATE" (as Forth uses
    RPN notation).



    I don't know of any language that uses "-" for both negation (prefix,
    one operand) and subtraction (infix, two operands) and treats -5
    as a single token rather than a unary minus operator applied to the constant/literal "5".


    For the most part, the important part of the grammar is the "constant expression" or "integer constant expression" - and you get that whether
    "-5" is parsed as one token (in a hypothetical C variant) or two tokens.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to Keith Thompson on Thu Mar 27 13:48:52 2025
    On 3/26/25 05:59, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    Sure. But most people have forgotten such details long ago - negative
    numbers are not part of daily life (except as an indicator of how much
    you owe the bank...). After all, negative numbers are not natural!

    Most people understand credits and debits.
    From my experience, most do not. In particular, if you gave them
    examples of a transaction and the relevant accounts, they would have no
    idea which accounts should be debited, and which should be credited.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to James Kuyper on Thu Mar 27 18:31:04 2025
    On 2025-03-27, James Kuyper <[email protected]> wrote:
    On 3/26/25 05:59, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    Sure. But most people have forgotten such details long ago - negative
    numbers are not part of daily life (except as an indicator of how much
    you owe the bank...). After all, negative numbers are not natural!

    Most people understand credits and debits.
    From my experience, most do not. In particular, if you gave them
    examples of a transaction and the relevant accounts, they would have no
    idea which accounts should be debited, and which should be credited.

    Or, well, they would know because the transaction would say so.
    It will always be a debit/credit pair identifying the accounts.

    What they wouldn't necessarily know is whether they are supposed to add
    the credit or subtract it from the given account, and likewise
    for debit.

    Suppose Cash is used to make a $100 payment on a Loan.
    I think that would be a transaction consisting of a $100 debit from the
    Cash account, and a $100 credit to the Loan.
    Both of them subtract: Loan gets smaller when credited;
    Cash gets smaller when debited. Or ... do I have that backwards?

    If you use $100 Cash to buy an asset that is recorded in Assets,
    Cash will decrease as before by the debit, but Assets will increase
    by the credit, unlike Loan. These accounts have the same "polarity"
    because they are on that side of the ledger which tracks what the
    business possesses. Equity and Loan are what the business owes to
    external interests. Equity is the owner's stake in the business; Loan is
    the lender's stake.

    It is much, much better to just make the different types of accounts
    have opposite signs. Anything owed, like Equity and Loan, runs
    negative.

    Things are more flexible then, because a transaction can then involve
    two *or more* accounts. The deltas have to add to zero, that is all.
    Thus a transaction can be valid that updates accounts
    A, B, C and D with these deltas: A:10, B:-5, C:3, D:-8.

    This is extremely convenient for record keeping. For instance
    transactions that involve tax slices can directly record them in tax
    accounts, without needing a separate transaction.

    E.g. a transaction that collects a 1050 invoice from a customer can
    assign the 50 of that to the VAT account, and 1000 to Cash, in one
    transaction, while Equity decreases by the entire 1050 (going more
    negative). Rather than having to credit Cash with 1050, and then
    introducing a separate transaction which debits Cash by 50 and credits
    Vat. That increasees the number of items recorded against each account
    and requires transactions to be linked together for traceability.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Keith Thompson on Thu Mar 27 20:06:02 2025
    On 27/03/2025 19:31, Keith Thompson wrote:
    James Kuyper <[email protected]> writes:
    On 3/26/25 05:59, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    Sure. But most people have forgotten such details long ago - negative
    numbers are not part of daily life (except as an indicator of how much >>>> you owe the bank...). After all, negative numbers are not natural!

    Most people understand credits and debits.
    From my experience, most do not. In particular, if you gave them
    examples of a transaction and the relevant accounts, they would have no
    idea which accounts should be debited, and which should be credited.

    Sure, most people don't understand double-entry bookkeepping. I was
    thinking of simpler concepts. Depositing money increases your bank
    account balance, withdrawing money decreases it, withdrawing too
    much can result in a negative balance, and so on. A checking account
    or credit card statement shows numbers with or without a "-" symbol.

    Most of us here are probably in the top 10% of the general population
    in terms of mathematical knowledge, and it can be difficult to know
    how much knowledge most people have. But I think that most people
    have a decent basic understanding of positive and negative numbers.
    As I mentioned recently, temperatures might have been a better
    example.

    And this is *way* off-topic.


    That didn't stop you having your say first /then/ declaring it as way off-topic!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to James Kuyper on Fri Mar 28 15:42:02 2025
    On 26/03/2025 18:31, James Kuyper wrote:
    On 3/26/25 05:00, David Brown wrote:
    On 26/03/2025 00:55, James Kuyper wrote:
    ...
    I was born just in time to be taught the New Math in school.

    These days, of course, kids don't learn about any of this - they just
    learn how to ask ChatGPT about it from their iPad.

    I'm currently raising two 9-year olds (yes, they were born when I was 56
    - I've been late for almost everything in my life, including my marriage
    - I hope that includes my funeral). They use ChromeBooks supplied by the school district, and as far as I know they've made no use of ChatGPT.

    The biggest difference between the way they were taught math and the way
    I was taught is something called a "number bond". The concept emphasizes
    that 6 and 4+2 are the same quantity, so 5 is "bonded" to the
    combination of 4 and 2.

    If '5' is bonded to '4+2' then I really have no clue about new maths.

    Please say '5' was a typo for '6'!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to Kaz Kylheku on Sat Mar 29 10:14:51 2025
    On 3/27/25 14:31, Kaz Kylheku wrote:
    On 2025-03-27, James Kuyper <[email protected]> wrote:
    On 3/26/25 05:59, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    Sure. But most people have forgotten such details long ago - negative
    numbers are not part of daily life (except as an indicator of how much >>>> you owe the bank...). After all, negative numbers are not natural!

    Most people understand credits and debits.
    From my experience, most do not. In particular, if you gave them
    examples of a transaction and the relevant accounts, they would have no
    idea which accounts should be debited, and which should be credited.

    Or, well, they would know because the transaction would say so.

    "Make a $1,000 payment from the checking account on the mortgage"
    describes the transaction, but most people who aren't familiar with
    accounting terms, would have trouble when reading that description
    deciding whether the checking account should be credited with $1,000, or debited, and similarly for the Mortgage.

    It will always be a debit/credit pair identifying the accounts.

    What they wouldn't necessarily know is whether they are supposed to add
    the credit or subtract it from the given account, and likewise
    for debit.

    That's what I meant when I said, they wouldn't know whether to credit or
    debit the relevant accounts. For instance, Cash is a debit-positive
    account, so a debit to Cash increases the balance, and a credit to Cash decreases the balance. It's exactly the opposite for a credit-positive
    account, such as your balance on a debt that you owe. I get the
    impression that you're unfamiliar with the use of "credit" and "debit"
    as verbs in this context, which is just another example of the problem.

    It might seem that just keeping track of positive and negative would be simpler, but all I can say is that if you took the time to study
    accounting in detail (which I would not recommend unless you have a
    practical use for the information), it would eventually become clear why
    the credit/debit approach is better.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to James Kuyper on Sat Mar 29 16:39:52 2025
    James Kuyper <[email protected]> writes:
    On 3/27/25 14:31, Kaz Kylheku wrote:
    On 2025-03-27, James Kuyper <[email protected]> wrote:
    On 3/26/25 05:59, Keith Thompson wrote:
    David Brown <[email protected]> writes:
    [...]
    Sure. But most people have forgotten such details long ago - negative >>>>> numbers are not part of daily life (except as an indicator of how much >>>>> you owe the bank...). After all, negative numbers are not natural!

    Most people understand credits and debits.
    From my experience, most do not. In particular, if you gave them
    examples of a transaction and the relevant accounts, they would have no
    idea which accounts should be debited, and which should be credited.

    Or, well, they would know because the transaction would say so.

    "Make a $1,000 payment from the checking account on the mortgage"
    describes the transaction, but most people who aren't familiar with >accounting terms, would have trouble when reading that description
    deciding whether the checking account should be credited with $1,000, or >debited, and similarly for the Mortgage.

    I find that difficult to agree with. I have my grandfather's farm
    records from the 40s and 50s. Born in 1903 on the same farm, eighth
    grade education, yet his ledger sheets are double-entry "income"
    and "expenses". Both recorded as positive
    values (the difference beteween the sum of each column is the
    profit or loss for the year).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Keith Thompson on Sat Mar 29 18:25:39 2025
    On 26.03.2025 23:15, Keith Thompson wrote:
    [ dyadic and monadic minus operations, and minus sign at literals ]

    I don't know of any language that uses "-" for both negation (prefix,
    one operand) and subtraction (infix, two operands) and treats -5
    as a single token rather than a unary minus operator applied to the constant/literal "5".

    I as well don't know. It may simplify things if the '-' is detached
    from a numeric positive literal, especially for numeric expressions.

    There's certainly cases where a signed numeric token is appropriate,
    thinking (for example) about a CONST declaration in Pascal, like
    CONST a = -5; here you don't have expressions, just the primitive
    type literals.[*]

    The point why I think that a signed literal as entity may be useful
    is that it's a static (compile time) property; -5 is in that respect
    different from -x, the negation operation. A negative constant does
    not "cost" a run-time operation.

    Given what we recently discussed about a division by a constant,
    where compilers (may) handle expressions by pre-calculating the
    reciprocal for run-time efficiency, it's not that clear to me that
    it matters either way.

    I suppose it's a question of whether it complicates syntax definition
    or parsing.

    Janis

    [*] Note: Pascal, syntactically, also doesn't have signed constants,
    the sign is in all those contexts an explicit token, not part of the
    number token. This holds for both, a 'CONST' declaration and being
    part of an INTEGER literal in an expression. The 'REAL' literals are
    also handled that way, the overall sign is not part of the numeric
    token, but the sign of its exponent *is* part of the 'REAL' token.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bart@21:1/5 to Janis Papanagnou on Sat Mar 29 18:20:37 2025
    On 29/03/2025 17:25, Janis Papanagnou wrote:
    On 26.03.2025 23:15, Keith Thompson wrote:
    [ dyadic and monadic minus operations, and minus sign at literals ]

    I don't know of any language that uses "-" for both negation (prefix,
    one operand) and subtraction (infix, two operands) and treats -5
    as a single token rather than a unary minus operator applied to the
    constant/literal "5".

    I as well don't know. It may simplify things if the '-' is detached
    from a numeric positive literal, especially for numeric expressions.

    There's certainly cases where a signed numeric token is appropriate,
    thinking (for example) about a CONST declaration in Pascal, like
    CONST a = -5; here you don't have expressions, just the primitive
    type literals.[*]

    The point why I think that a signed literal as entity may be useful
    is that it's a static (compile time) property; -5 is in that respect different from -x, the negation operation. A negative constant does
    not "cost" a run-time operation.

    Given what we recently discussed about a division by a constant,
    where compilers (may) handle expressions by pre-calculating the
    reciprocal for run-time efficiency, it's not that clear to me that
    it matters either way.

    I suppose it's a question of whether it complicates syntax definition
    or parsing.



    Having a single token like '-1234' is pointless. Most languages allow
    you to add parentheses like '-(1234)' which must give the exact same
    result.

    And many also reduce expressions like '1234+1' to '12345' at compile
    time. In this case you'd want '-(1234+1)' to be equivalent to '-1235'.

    Or there may be a named alias 'X' for 1234, and later write '-X'.

    So there is no advantage to it, except possibly in the special case
    where the N in -N is something like INT_MIN, as N could have a different
    type.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Kuyper@21:1/5 to Scott Lurndal on Sat Mar 29 21:02:42 2025
    On 3/29/25 12:39, Scott Lurndal wrote:
    James Kuyper <[email protected]> writes:
    ...
    "Make a $1,000 payment from the checking account on the mortgage"
    describes the transaction, but most people who aren't familiar with
    accounting terms, would have trouble when reading that description
    deciding whether the checking account should be credited with $1,000, or
    debited, and similarly for the Mortgage.

    I find that difficult to agree with. I have my grandfather's farm
    records from the 40s and 50s. Born in 1903 on the same farm, eighth
    grade education, yet his ledger sheets are double-entry "income"
    and "expenses". Both recorded as positive
    values (the difference beteween the sum of each column is the
    profit or loss for the year).

    One anecdote doesn't count for much - there's lots of people who've
    taught themselves accounting to handle their financial affairs - but
    there's also lots of people who tried and failed, and many more who
    didn't even try. The key question is how many people fall into each of
    those categories, and an anecdote cannot answer that question.

    My father was a CPA. I took a brief course in accounting that was
    intended to better prepare me for a possible job writing financial applications. Two of my sisters-in-law are accountants. My wife aspired
    to switch careers to accounting, and took an accounting classes every
    semester for several years. I read her textbooks to help her achieve
    that goal, and found them easy to understand. Therefore, these concepts
    seem easy to me. But my general experience with people who aren't
    accounting professionals (including my wife) is that most are not at all familiar with those terms.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to bart on Sun Mar 30 02:39:09 2025
    On 29.03.2025 19:20, bart wrote:
    On 29/03/2025 17:25, Janis Papanagnou wrote:
    On 26.03.2025 23:15, Keith Thompson wrote:
    [ dyadic and monadic minus operations, and minus sign at literals ]

    I don't know of any language that uses "-" for both negation (prefix,
    one operand) and subtraction (infix, two operands) and treats -5
    as a single token rather than a unary minus operator applied to the
    constant/literal "5".

    I as well don't know. It may simplify things if the '-' is detached
    from a numeric positive literal, especially for numeric expressions.

    There's certainly cases where a signed numeric token is appropriate,
    thinking (for example) about a CONST declaration in Pascal, like
    CONST a = -5; here you don't have expressions, just the primitive
    type literals.[*]

    The point why I think that a signed literal as entity may be useful
    is that it's a static (compile time) property; -5 is in that respect
    different from -x, the negation operation. A negative constant does
    not "cost" a run-time operation.

    Given what we recently discussed about a division by a constant,
    where compilers (may) handle expressions by pre-calculating the
    reciprocal for run-time efficiency, it's not that clear to me that
    it matters either way.

    I suppose it's a question of whether it complicates syntax definition
    or parsing.



    Having a single token like '-1234' is pointless. Most languages allow
    you to add parentheses like '-(1234)' which must give the exact same
    result.

    In above post there's not a specific or "most" languages given as
    example for a possible rationale. (There was an example given that
    expects [in Pascal] a constant numeric literal, not an expression.)

    '-1234' is a standard representation (a literal) for a number.
    '-(1234)' is an expression (with parenthesis and a negation op).

    Even '- 1234' (with a space) can be considered an expression, or
    not, depending on whether a language would allow spaces as part of
    numeric literals or not.


    And many also reduce expressions like '1234+1' to '12345' at compile
    time. In this case you'd want '-(1234+1)' to be equivalent to '-1235'.

    Or there may be a named alias 'X' for 1234, and later write '-X'.

    Again examples for expressions.

    Janis

    [...]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alan Mackenzie@21:1/5 to Keith Thompson on Mon Mar 31 17:15:14 2025
    Keith Thompson <[email protected]> wrote:

    [ .... ]

    I don't know of any language that uses "-" for both negation (prefix,
    one operand) and subtraction (infix, two operands) and treats -5
    as a single token rather than a unary minus operator applied to the constant/literal "5".

    How about Lisp? The unary operator is (- 5), the binary (- 10 5).

    It doesn't match your second parenthetical remark ("infix") but
    otherwise it does.

    -5 is syntactically not an operator followed by a constant. It surely
    gets parsed as a single token.

    --
    Keith Thompson (The_Other_Keith) [email protected]
    void Void(void) { Void(); } /* The recursive call of the void */

    --
    Alan Mackenzie (Nuremberg, Germany).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Alan Mackenzie on Mon Mar 31 19:48:36 2025
    On 2025-03-31, Alan Mackenzie <[email protected]> wrote:
    Keith Thompson <[email protected]> wrote:

    [ .... ]

    I don't know of any language that uses "-" for both negation (prefix,
    one operand) and subtraction (infix, two operands) and treats -5
    as a single token rather than a unary minus operator applied to the
    constant/literal "5".

    How about Lisp? The unary operator is (- 5), the binary (- 10 5).

    It doesn't match your second parenthetical remark ("infix") but
    otherwise it does.

    Lisp could be infix if we want with some macro:

    (infix-environment
    ... (10 - (a * 3)) ...)

    Here, the fictional macro infix-environment implements a code walker of
    its interior looking for situations where the second place of a form is
    a symbol with a function binding, and the first place isn't a symbol, or
    not one with a function binding. Those expressions are then treated by
    a conversion of (x1 x2 x3 ...) to (infix x1 x2 x3). When the conversion
    is complete, the infix-environment macro removes itself, or rewrites
    itself to progn. The (also fictitious) infix macro then expands the
    infixes, turning (infix 10 - (a * 3)) into (- 10 (* a 3)).

    Things like (a cons (b cons c)) would also work for (cons a (cons b c)),
    not only math infix. However, the infix macro could recognize
    infix without parentheses, using operator precedence.

    So then we would have a language in which we have - A unary,
    A - B infix, and -5 is a negative constant.


    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Kaz Kylheku on Mon Mar 31 21:14:57 2025
    On 2025-03-31, Kaz Kylheku <[email protected]> wrote:
    On 2025-03-31, Alan Mackenzie <[email protected]> wrote:
    Keith Thompson <[email protected]> wrote:

    [ .... ]

    I don't know of any language that uses "-" for both negation (prefix,
    one operand) and subtraction (infix, two operands) and treats -5
    as a single token rather than a unary minus operator applied to the
    constant/literal "5".

    How about Lisp? The unary operator is (- 5), the binary (- 10 5).

    It doesn't match your second parenthetical remark ("infix") but
    otherwise it does.

    Lisp could be infix if we want with some macro:

    (infix-environment
    ... (10 - (a * 3)) ...)

    I had been toying with the idea in my mind for a while, and this gave me the impetus to get it working. It's very simple if you extend the Lisp dialect with a suitable code walking hook.

    Working, advanced proof of concept:

    $ ./txr -i infix.tl
    TXR's no-spray organic production means every bug is carefully removed by hand.
    1> (ifx (let ((a 1) (b 2) (c 3))
    ((a + b) * 3)))
    9

    I'm going to post about this in more detail in comp.lang.lisp, where
    it is topical.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Richard Heathfield on Sat May 3 20:03:46 2025
    Richard Heathfield <[email protected]> writes:

    On 25/03/2025 11:55, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    On 25.03.2025 05:56, Tim Rentsch wrote:

    Janis Papanagnou <[email protected]> writes:

    [...]

    When I started with "C" or C++ there were not only 8-bit
    multiples defined for the integral types; [...]

    In C the correct phrase is integer types, not integral types.

    My apologies if I'm using language independent terms.

    The problem is that what was written used the word "integral"
    incorrectly.

    But "integer type" is also a problem. 'Integer' is a noun, not an
    adjective. To modify the noun 'type' you need an adjective that means
    of, pertaining to, or being an integer'. The only available candidate
    is 'integral'.

    Using a noun as a modifier to another noun is a perfectly normal
    English construction. It's called a noun adjunct. "Chicken soup"
    is an example. See

    https://en.wikipedia.org/Noun_adjunct

    Furthermore, there are other noun-as-modifier constructions in the
    original C standard. The C89/C90 standard has "function types",
    "character types", "signed integer types", "unsigned integer
    types", "integer constants", and "integer character constants", to
    give a few examples. In fact the C standard is rife with noun-noun
    phrases: "execution environment", "storage boundaries", "byte
    address", "bit representation", "language elements", "program
    construct", "character set" -- and that's just on page 2.

    I'll cheerfully accept "integer type" because, though clumsy, it's standardese. But if we're using English it's wrong to reject "integral type"; 'adjective noun' is far closer to the spirit of the English
    language than 'noun noun'.

    Both are perfectly fine, as far as what kind of constructions are
    allowed in English. The reason "integral types" is a worse choice
    than "integer types" is that "integral types" has a different
    meaning, and in particular an inappropriate meaning. The adjective
    "integral" refers to the /value/ of a number, regardless of what
    number system it is in. The noun "integer" used as a modifier refers
    to the number system. An integer number always has an integral
    value, but real numbers or complex numbers can have integral values
    without being integer numbers.

    At least until such time as the backroom
    boffins come up with a better adjective for 'of, pertaining to, or
    being an integer', I stand with a foot planted firmly within each
    camp.

    One word being an adjective is a red herring. Using "integer types"
    is better both because it is more consistent with other parts of the
    C standard and because the meaning is crisper due to there being
    less ambiguity as to what is meant.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Tim Rentsch on Sun May 4 14:04:44 2025
    On 04/05/2025 05:03, Tim Rentsch wrote:
    Richard Heathfield <[email protected]> writes:

    On 25/03/2025 11:55, Tim Rentsch wrote:

    <snip>

    Tim, /please/ stop necroposting. When a long thread died out over a
    month ago, it is usually because the participants lost interest, or felt
    that anything worth saying on the topic had been said, or perhaps that
    the conversation had strayed too off topic or become too heated.

    Consider drawing the line at one week - I recommend you do not reply to
    posts older than that unless you have something quite exceptional to share.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to David Brown on Sun May 4 15:43:18 2025
    On 04/05/2025 13:04, David Brown wrote:
    On 04/05/2025 05:03, Tim Rentsch wrote:
    Richard Heathfield <[email protected]> writes:

    On 25/03/2025 11:55, Tim Rentsch wrote:

    <snip>

    Tim, /please/ stop necroposting.  When a long thread died out
    over a month ago, it is usually because the participants lost
    interest, or felt that anything worth saying on the topic had
    been said,

    ...and all too often anything not worth saying.

    or perhaps that the conversation had strayed too off
    topic or become too heated.

    If the resurrection is to make an interesting observation about
    C, I think I could stand an exception, couldn't you?


    Consider drawing the line at one week - I recommend you do not
    reply to posts older than that unless you have something quite
    exceptional to share.

    Apparently you could. :-)


    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Richard Heathfield on Sun May 4 18:39:47 2025
    On 04/05/2025 16:43, Richard Heathfield wrote:
    On 04/05/2025 13:04, David Brown wrote:
    On 04/05/2025 05:03, Tim Rentsch wrote:
    Richard Heathfield <[email protected]> writes:

    On 25/03/2025 11:55, Tim Rentsch wrote:

    <snip>

    Tim, /please/ stop necroposting.  When a long thread died out over a
    month ago, it is usually because the participants lost interest, or
    felt that anything worth saying on the topic had been said,

    ...and all too often anything not worth saying.

    or perhaps that the conversation had strayed too off topic or become
    too heated.

    If the resurrection is to make an interesting observation about C, I
    think I could stand an exception, couldn't you?


    Yes, that /could/ be a possible reason for the resurrection. You'd
    still need to think if it was worth it or not - I'm sure most of us
    could think of lots of observations about C that we would think of as interesting, but usually not worth posting about. And if it were really interesting, maybe starting a new thread would make more sense than
    posting to a dead thread.

    However, I saw nothing interesting about C in Tim's post - or anything particularly interesting and new to the thread about linguistics.

    Perhaps /you/ thought his reply was worth bringing the thread back to
    life - I can only speak for myself.


    Consider drawing the line at one week - I recommend you do not reply
    to posts older than that unless you have something quite exceptional
    to share.

    Apparently you could. :-)


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to David Brown on Sun May 4 19:02:59 2025
    On 04/05/2025 17:39, David Brown wrote:
    Perhaps /you/ thought his reply was worth bringing the thread
    back to life

    Not particularly; IIRC the woefully departed horse had already
    been thoroughly flogged, and - like you - I saw no reason to
    defibrillate it. My reply was addressed more to the general (but
    more topical) case, because I wouldn't want people to feel
    inhibited against making genuinely interesting replies just
    because they'd been on holiday, say, when the matter was
    discussed here.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Richard Heathfield on Mon May 5 11:29:23 2025
    On 04/05/2025 20:02, Richard Heathfield wrote:
    On 04/05/2025 17:39, David Brown wrote:
    Perhaps /you/ thought his reply was worth bringing the thread back to
    life

    Not particularly; IIRC the woefully departed horse had already been thoroughly flogged, and - like you - I saw no reason to defibrillate it.
    My reply was addressed more to the general (but more topical) case,
    because I wouldn't want people to feel inhibited against making
    genuinely interesting replies just because they'd been on holiday, say,
    when the matter was discussed here.


    Fair enough. I'd still encourage people to check the thread dates and
    consider whether their post-holiday posts are interesting enough to be
    worth bring back an old thread, but that is certainly a situation where
    posting to old threads can make sense.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Richard Heathfield on Thu May 15 23:02:53 2025
    Richard Heathfield <[email protected]> writes:

    On 04/05/2025 13:04, David Brown wrote:

    On 04/05/2025 05:03, Tim Rentsch wrote:

    Richard Heathfield <[email protected]> writes:

    On 25/03/2025 11:55, Tim Rentsch wrote:

    <snip>

    Tim, /please/ stop necroposting. When a long thread died out over a
    month ago, it is usually because the participants lost interest, or
    felt that anything worth saying on the topic had been said,

    ...and all too often anything not worth saying.

    or perhaps that the conversation had strayed too off topic or become
    too heated.

    If the resurrection is to make an interesting observation about C, I
    think I could stand an exception, couldn't you?

    Consider drawing the line at one week - I recommend you do not reply
    to posts older than that unless you have something quite exceptional
    to share.

    Apparently you could. :-)

    I would like to respond here with some general comments about
    newsgroup posting that may be of some interest to some readers
    but don't have anything to do with the C language so some people
    may want to skip the rest of the posting on that basis. I think
    there is a general rule that (within limits) comments about
    topicality are always topical, but I recognize that some people
    may have no interest so out of courtesy I am giving early warning
    so they can stop reading here if they choose.

    When posting a followup, as opposed to starting a new topic, in
    most cases (and maybe even almost all cases), my reasons for
    posting are not to take part in some general discussion but
    because there are some specific points in the posting to which I
    am responding that in my opinion merit further comment. I expect
    that the person who wrote the posting being replied to has at
    least a fair chance of being interested, and also that other
    people might have some interest but that second aspect is not a
    prerequisite for my deciding to write a followup. As with all
    general rules there can be exceptions to the previous statements
    but those statements should hold most of the time.

    In the particular earlier case I was responding to some comments
    made by yourself (Richard Heathfield); my motivation for posting
    was mainly to give him an opportunity to see my reactions to
    various comments of his made earlier. (Both my comments and the
    comments made in the posting I was responding to were removed by
    David Brown, and so they don't appear here.)

    I also have a strong topicality filter -- and one made stronger
    in recent years -- in an effort to post articles only when they
    have some bearing on the C language. In this regard I am better
    than I used to be, and am generally happy with the results.

    As to the followup from David Brown, I don't know why he posted
    it. I have no interest in anything he has to say, and I have no
    reason to think he doesn't know this. I don't read postings from
    David, except sometimes inadvertently, and have made a public
    statement about that, so it isn't a secret. Also I don't respond
    to postings from David (naturally, since I don't read them), and
    respond to his comments (occasionally) only when they turn up as a
    result of being quoted in a followup posting to which I am
    responding for other reasons.

    It's possible there are some exceptions to the statements made
    in the last paragraph -- I'm not perfect, and sometimes I make
    mistakes -- but it is my intention to follow them without
    exception.

    I make an effort to be helpful and to contribute something positive
    (even if I might also disagree on some points) in my postings here.
    If someone feels my comments offer no value, I have no objection to
    a decision not to read them. I do regret that some people have this
    reaction, but I respect the right of individual choice when it
    doesn't infringe on others' rights, and that has to take precedence
    over any regret I might feel.

    I hope these comments have provided a better understanding of the
    thought processes underlying my decisions about whether and what to
    say in followup postings. Thank you for your attention.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)