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


Groups > comp.lang.c > #153774

Re: widening multiplication

From Keith Thompson <Keith.S.Thompson+u@gmail.com>
Newsgroups comp.lang.c
Subject Re: widening multiplication
Date 2020-08-19 15:07 -0700
Organization None to speak of
Message-ID <87o8n68f37.fsf@nosuchdomain.example.com> (permalink)
References (8 earlier) <67169d57-8738-406a-b5ad-b6e8265dfcacn@googlegroups.com> <rhik33$v1l$1@dont-email.me> <1507c5b9-7531-4c59-937a-299c799b9e04n@googlegroups.com> <87364ia79o.fsf@nosuchdomain.example.com> <8f076f92-55bc-4c19-b504-7e80c8878cb2n@googlegroups.com>

Show all headers | View raw


Malcolm McLean <malcolm.arthur.mclean@gmail.com> writes:
> On Wednesday, 19 August 2020 at 18:13:43 UTC+1, Keith Thompson wrote:
>> What if? Why don't you tell us? What changes would you make to the 
>> C language to accomodate Matlab programmers? 
>> 
>> My answer: A Matlab programmer who doesn't know C is likely to make 
>> mistakes while writing C. Yes, it can be a problem. What's your 
>> solution?
>>
> In this case, it's quite simple. Where we have an assignment statement, 
> arithmetic is carried out in the widest type that appears in that statement.

That definitely has the potential to break existing code.  A contrived
example:

#include <stdio.h>
#include <stdint.h>
int main(void) {
    uint32_t a = UINT32_MAX;
    uint32_t b = 1;
    uint64_t c = a + b;
    printf("c = %llu\n", (unsigned long long)c);
}

This has well defined behavior and prints "c = 0".  With your proposed
change, it would print "c = 4294967296".

The current rules, once you learn them, are straightforward: the type of
an expression is determined by the expression itself, not by the context
in which it appears.  (The special status of int is admittedly a
complication.)  You propose to make the rules more complicated so that
certain cases are more intuitive *for non-C programmers*.

You'd also have to describe the new rules more precisely.  (C doesn't
have an "assignment statement".)

Now if I were designing a new language, I'd certainly consider this kind
of thing -- or just requiring conversions to be explicit (I know some
people would hate that).  But I wouldn't call it "C".

> So the Matlab programmer knows that he might be dealing with big matrices,
> but dimensions can't go above 32 bits.
>
> So, int x, y, width;
> long long index;
>
> index = y * width + x;
>
> If he's using Jacob's compiler, this will work as expected if the matrix has more
> than 2 billion entries. If he moves his Matlab platform to use another compiler,
> the code will compile without warning, it will appear to work when he tests it
> with small matrices, then it will fail when the matrix gets very large.
>
> Terrible, terrible.

And yet it's already perfectly feasible to write code that works:

    index = (long long)y * width + x;

Or maybe define x, y, and width as size_t rather than int.

-- 
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