Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #153733
| From | Keith Thompson <Keith.S.Thompson+u@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: widening multiplication |
| Date | 2020-08-18 15:38 -0700 |
| Organization | None to speak of |
| Message-ID | <87blj7a8bb.fsf@nosuchdomain.example.com> (permalink) |
| References | (4 earlier) <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> |
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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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