Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #153733

Re: widening multiplication

Path csiph.com!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From Keith Thompson <Keith.S.Thompson+u@gmail.com>
Newsgroups comp.lang.c
Subject Re: widening multiplication
Date Tue, 18 Aug 2020 15:38:32 -0700
Organization None to speak of
Lines 50
Message-ID <87blj7a8bb.fsf@nosuchdomain.example.com> (permalink)
References <rheo9v$2i7$1@dont-email.me> <rhg75e$bll$1@dont-email.me> <slrnrjnih2.kpi.grahn+nntp@frailea.sa.invalid> <rhgk8p$p2n$1@dont-email.me> <chine.bleu-62B5B2.06534218082020@reader.eternal-september.org> <rhgnne$fs3$1@dont-email.me> <chine.bleu-372279.07240718082020@reader.eternal-september.org> <rhhee3$5r5$1@dont-email.me> <67169d57-8738-406a-b5ad-b6e8265dfcacn@googlegroups.com>
Mime-Version 1.0
Content-Type text/plain
Injection-Info reader02.eternal-september.org; posting-host="d10d1d18e78b41dcb13329267574e04e"; logging-data="14909"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/P/cmzKeeodUQ7ei1JZAKT"
User-Agent Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
Cancel-Lock sha1:GiTJxqWsGvQ+Byfce8KM4DhLmts= sha1:mm1/8b5tqNKQPGIzbrIcLfHeIYY=
Xref csiph.com comp.lang.c:153733

Show key headers only | View raw


Malcolm McLean <malcolm.arthur.mclean@gmail.com> writes:
> On Tuesday, 18 August 2020 at 21:41:54 UTC+1, David Brown wrote:
>> > Knowing is better than guessing. Add some functions, int32 
>> > imul3232 (int32_t,int32), int64_t imul3264 (int32,int32), and 
>> > int64_t imul6464 (int64_t,int64_t). Compilers that don't or can't 
>> > provide optimised multiplies can implement the function in 
>> > vanilla C. The intent is clear, the compiler doesn't have to 
>> > guess.
>> Compilers don't have to guess - plain C has clear rules about how 
>> calculations are carried out based on their types. I agree that knowing 
>> is better than guessing - it is the programmer that needs to know and 
>> not guess.
>>
> So we have
>
> int32_t a, b;
> int64_t c;
>
> c = a * b;
>
> The intention is pretty obvious. The programmer shouldn't have to know that 
> behaviour is in fact undefined if the calculation overflows 32 bits, though it
> likely works as expected on his platform. The language shouldn't insist on
> that sort of familiarity with the standard for such a basic operation.

Uh huh.  So how would you modify the standard to ensure that people who
haven't read it are guaranteed to have their code behave the way the
expect it to?  #pragma STDC DWIM, perhaps?

c = a * b doesn't express any intent, as far as the language is
concerned, other than multiplying two int32_t values and storing the
result in an int64_t object.  (And the ranks of those types relative to
int can affect the behavior.)  And if we replace int by uint, the value
is *required* to be truncated.

If you want to express the intent of a 32-by-32-to-64 multiplication,
you can write:
    c = (int64_t)a * b;
or
    c = (int64_t)a * (uint64_t)b;
if you want to be a little more explicit.

It is perhaps unfortunate that C doesn't define a 32-by-32-to-64
multiplication operator.  It might make sense to define it in a
language that assumes specific sizes, but C doesn't.

-- 
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
Working, but not speaking, for Philips Healthcare
void Void(void) { Void(); } /* The recursive call of the void */

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

widening multiplication jacobnavia <jacob@jacob.remcomp.fr> - 2020-08-17 22:11 +0200
  Re: widening multiplication Eric Sosman <esosman@comcast-dot-net.invalid> - 2020-08-17 16:30 -0400
    Re: widening multiplication jacobnavia <jacob@jacob.remcomp.fr> - 2020-08-18 09:27 +0200
  Re: widening multiplication Andrey Tarasevich <andreytarasevich@hotmail.com> - 2020-08-17 13:33 -0700
    Re: widening multiplication jacobnavia <jacob@jacob.remcomp.fr> - 2020-08-18 09:24 +0200
    Re: widening multiplication Andrey Tarasevich <andreytarasevich@hotmail.com> - 2020-08-21 14:47 -0700
  Re: widening multiplication Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-17 21:52 +0100
    Re: widening multiplication jacobnavia <jacob@jacob.remcomp.fr> - 2020-08-18 09:22 +0200
  Re: widening multiplication Siri Cruise <chine.bleu@yahoo.com> - 2020-08-17 14:10 -0700
    Re: widening multiplication Bart <bc@freeuk.com> - 2020-08-17 22:33 +0100
      Re: widening multiplication Siri Cruise <chine.bleu@yahoo.com> - 2020-08-17 15:13 -0700
      Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-18 11:33 +0200
    Re: widening multiplication jacobnavia <jacob@jacob.remcomp.fr> - 2020-08-18 09:20 +0200
  Re: widening multiplication scott@slp53.sl.home (Scott Lurndal) - 2020-08-17 21:38 +0000
    Re: widening multiplication jacobnavia <jacob@jacob.remcomp.fr> - 2020-08-18 09:19 +0200
  Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-18 11:31 +0200
    Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-18 05:00 -0700
      Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-18 15:10 +0200
    Re: widening multiplication Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-18 12:31 +0000
      Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-18 15:15 +0200
        Re: widening multiplication Siri Cruise <chine.bleu@yahoo.com> - 2020-08-18 06:53 -0700
          Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-18 16:14 +0200
            Re: widening multiplication Siri Cruise <chine.bleu@yahoo.com> - 2020-08-18 07:24 -0700
              Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-18 22:41 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-18 14:24 -0700
                Re: widening multiplication Bart <bc@freeuk.com> - 2020-08-18 22:54 +0100
                Re: widening multiplication Siri Cruise <chine.bleu@yahoo.com> - 2020-08-18 15:18 -0700
                Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-18 15:54 -0700
                Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-18 15:38 -0700
                Re: widening multiplication Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-19 07:03 +0000
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-19 09:24 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-19 02:13 -0700
                Re: widening multiplication Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-19 10:43 +0000
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-19 12:50 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-19 07:30 -0700
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-19 07:44 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-19 17:35 +0200
                Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-19 10:13 -0700
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-19 14:30 -0700
                Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-19 15:07 -0700
                Re: widening multiplication Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-19 22:13 +0000
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-19 15:49 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-20 11:31 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-20 03:47 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-20 13:21 +0200
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-20 08:20 -0400
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-21 09:51 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-21 02:51 -0700
                Re: widening multiplication Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-21 11:44 +0100
                Re: widening multiplication Bart <bc@freeuk.com> - 2020-08-21 12:17 +0100
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-21 13:36 +0200
                Re: widening multiplication Bart <bc@freeuk.com> - 2020-08-21 13:15 +0100
                Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-21 11:04 -0700
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-21 08:30 -0400
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-21 13:32 +0200
                Re: widening multiplication Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-21 12:46 +0100
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-21 07:43 -0700
                Re: widening multiplication Bart <bc@freeuk.com> - 2020-08-21 16:13 +0100
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-21 20:15 +0200
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-21 20:14 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-21 16:37 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-22 15:38 +0200
                Re: widening multiplication Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-22 01:02 +0100
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-22 04:57 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-22 16:11 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-22 08:46 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-22 18:33 +0200
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-22 13:44 -0400
                Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-22 12:48 -0700
                Re: widening multiplication Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-22 21:45 +0100
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-22 05:20 -0700
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-22 10:16 -0400
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-22 08:59 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-22 19:04 +0200
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-22 13:59 -0400
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-22 23:01 +0200
                Re: widening multiplication Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-08-23 07:42 -0700
                Re: widening multiplication Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-22 22:12 +0100
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-23 13:31 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-23 04:53 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-23 14:22 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-23 06:47 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-23 16:25 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-23 07:42 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-24 09:10 +0200
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-24 02:06 -0700
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-23 13:10 -0400
                Re: widening multiplication Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-23 16:16 +0100
                Re: widening multiplication Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-22 22:02 +0100
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-22 18:14 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-23 14:27 +0200
                Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-21 05:58 -0700
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-19 19:15 -0400
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-19 16:48 -0700
                Re: widening multiplication Bart <bc@freeuk.com> - 2020-08-19 23:39 +0100
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-19 15:51 -0700
                Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-19 15:56 -0700
                Re: widening multiplication Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-19 16:04 -0700
                Re: widening multiplication Siri Cruise <chine.bleu@yahoo.com> - 2020-08-19 18:04 -0700
                Re: widening multiplication antispam@math.uni.wroc.pl - 2020-08-20 00:13 +0000
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-20 10:06 +0200
                Re: widening multiplication Stef <stef33d@yahooI-N-V-A-L-I-D.com.invalid> - 2020-08-20 11:26 +0200
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-20 13:25 +0200
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-19 07:41 -0400
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-19 15:08 +0200
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-19 10:29 -0400
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-19 17:41 +0200
                Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-19 13:34 -0400
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-19 20:21 +0200
                Re: widening multiplication Siri Cruise <chine.bleu@yahoo.com> - 2020-08-18 15:16 -0700
                Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-19 09:32 +0200
        Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-18 11:11 -0400
          Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-18 22:45 +0200
  Re: widening multiplication Daniel Hyde <Daniel.Hyde71@gmail.com> - 2020-08-19 20:17 +0200
    Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-19 15:20 -0400
      Re: widening multiplication Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-19 20:59 +0000
        Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-19 17:28 -0400
          Re: widening multiplication Bart <bc@freeuk.com> - 2020-08-19 22:43 +0100
    Re: widening multiplication Sjouke Burry <burrynulnulfour@ppllaanneett.nnll> - 2020-08-19 21:38 +0200
      Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-19 21:47 +0200
      Re: widening multiplication Daniel Hyde <Daniel.Hyde71@gmail.com> - 2020-08-20 12:24 +0200
        Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-20 08:14 -0400
          Re: widening multiplication Daniel Hyde <Daniel.Hyde71@gmail.com> - 2020-08-20 14:20 +0200
            Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-20 10:39 -0700
    Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-19 15:55 -0400
      Re: widening multiplication Daniel Hyde <Daniel.Hyde71@gmail.com> - 2020-08-22 12:30 +0200
        Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-22 05:09 -0700
          Re: widening multiplication Daniel Hyde <Daniel.Hyde71@gmail.com> - 2020-08-22 17:15 +0200
            Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-22 19:06 +0200
              Re: widening multiplication Richard Harnden <richard.nospam@gmail.com> - 2020-08-22 19:06 +0100
                Re: widening multiplication Bonita Montero <Bonita.Montero@gmail.com> - 2020-08-22 20:28 +0200
                Re: widening multiplication Bonita Montero <Bonita.Montero@gmail.com> - 2020-08-23 01:36 +0200
                Re: widening multiplication "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-22 18:15 -0700
                Re: widening multiplication Bonita Montero <Bonita.Montero@gmail.com> - 2020-08-23 11:16 +0200
                Re: widening multiplication "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-23 21:05 -0700
              Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-22 12:45 -0700
            Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-22 11:47 -0700
        Re: widening multiplication Richard Damon <Richard@Damon-Family.org> - 2020-08-22 10:21 -0400
          Re: widening multiplication Bart <bc@freeuk.com> - 2020-08-22 16:18 +0100
            Re: widening multiplication David Brown <david.brown@hesbynett.no> - 2020-08-22 19:16 +0200
        Re: widening multiplication Kaz Kylheku <793-849-0957@kylheku.com> - 2020-08-23 04:38 +0000
          Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-23 08:22 -0400
            Re: widening multiplication Kaz Kylheku <793-849-0957@kylheku.com> - 2020-08-24 03:00 +0000
              Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-23 23:54 -0400
                Re: widening multiplication Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-24 06:19 +0000
                Re: widening multiplication James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-24 09:45 -0400
                Re: widening multiplication Kaz Kylheku <793-849-0957@kylheku.com> - 2020-08-24 14:47 +0000
                Re: widening multiplication "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-24 12:14 -0700
                Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-24 08:40 -0700
                Re: widening multiplication Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-26 18:06 +0000
          Re: widening multiplication Daniel Hyde <Daniel.Hyde71@gmail.com> - 2020-08-23 17:55 +0200
            Re: widening multiplication Bart <bc@freeuk.com> - 2020-08-23 17:38 +0100
    Re: widening multiplication Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-19 13:15 -0700
  Re: widening multiplication rick.c.hodgin@gmail.com - 2020-08-23 08:03 -0700

csiph-web