Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > comp.lang.c > #387515

Challenge/exercise problem - signum() function

From Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups comp.lang.c
Subject Challenge/exercise problem - signum() function
Date 2024-08-12 08:17 -0700
Organization A noiseless patient Spider
Message-ID <868qx193ew.fsf_-_@linuxsc.com> (permalink)
References <v8vlo9$2oc1v$1@dont-email.me> <v8vm2i$2oc1v$2@dont-email.me> <86y152in9n.fsf@linuxsc.com> <v9cpfm$38p3u$2@dont-email.me>

Show all headers | View raw


Vir Campestris <vir.campestris@invalid.invalid> writes:

> On 12/08/2024 01:43, Tim Rentsch wrote:
>
[...]
>> Also, it would be better for your understanding of C if you would
>> stop thinking about what is going on at the level of actual
>> hardware.  Doing that serves to confuse a lot more than it helps.
>
> I think I feel my ears burning!

I'm taking that as a compliment. :)

Also as an impetus to post a small C exercise I've been meaning
to put up.

The goal is to write a C function to compute a signum() value:

    long
    signum( long k ){
        /* should return
         *      -1 if k < 0
         *      +1 if k > 0
         *       0 otherwise
        **/
        /* ... */
        return  0; /* appropriate return value to be supplied */
    }

Of course such a function is trivial to write.  The challenge
part is to write one that observes the following restrictions:

  * must work on any conforming C90 or C99 implementation,
    including freestanding implementations.  (Hence _Bool
    is out of bounds.)

  * statements must be limited to expression statements and
    one return statement at the end of the function (simple
    declarations are also okay).

  * no conditional compilation (#if, #ifdef, #ifndef, etc)

  * no pointers, casts, unions, or user-defined types

  * all operators that return "logical" values are off
    limits:  must not use !, <, <=, >, >=, ==, !=, &&, ||, ?:

To make things easier, you may assume 'long' has no padding
bits, and no trap representations (there may be negative
zeros though).

That's it.  Should provide some fun for those who want to
try it.

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


Thread

how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-07 08:28 -0300
  Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-07 08:33 -0300
    Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-07 13:13 -0700
    Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-11 17:43 -0700
      Re: how cast works? Vir Campestris <vir.campestris@invalid.invalid> - 2024-08-12 11:51 +0100
        Challenge/exercise problem - signum() function Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-12 08:17 -0700
          Re: Challenge/exercise problem - signum() function Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2024-08-12 16:07 +0000
            Re: Challenge/exercise problem - signum() function Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-12 09:57 -0700
  Re: how cast works? Dan Purgert <dan@djph.net> - 2024-08-07 20:00 +0000
    Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-07 13:26 -0700
    Re: how cast works? Lawrence D'Oliveiro <ldo@nz.invalid> - 2024-08-07 23:00 +0000
    Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-08 08:14 -0300
      Re: how cast works? Bart <bc@freeuk.com> - 2024-08-08 14:23 +0100
        Re: how cast works? Michael S <already5chosen@yahoo.com> - 2024-08-08 19:32 +0300
          Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-08 14:11 -0300
          Re: how cast works? Bart <bc@freeuk.com> - 2024-08-08 18:29 +0100
            Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-08 14:50 -0300
              Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-08 14:57 -0300
              Re: how cast works? Bart <bc@freeuk.com> - 2024-08-08 19:01 +0100
                Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-08 15:13 -0300
              Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-08 12:29 -0700
            Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-08 19:58 +0200
              Re: how cast works? Bart <bc@freeuk.com> - 2024-08-08 20:09 +0100
                Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-09 00:32 +0200
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-08 16:14 -0700
                Re: how cast works? Lawrence D'Oliveiro <ldo@nz.invalid> - 2024-08-09 02:47 +0000
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-08 22:55 -0700
                Re: how cast works? James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-08-09 02:08 -0400
                Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-09 18:16 +0200
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 12:18 -0700
                Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-11 17:07 -0700
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-11 20:14 -0700
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-09 01:56 +0100
                Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-09 19:08 +0200
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-10 11:03 +0100
                Re: how cast works? Lawrence D'Oliveiro <ldo@nz.invalid> - 2024-08-09 02:45 +0000
      Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-08 12:42 -0700
        Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-08 17:34 -0300
          Re: how cast works? Bart <bc@freeuk.com> - 2024-08-08 22:41 +0100
            Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-08 16:17 -0700
              Re: how cast works? Bart <bc@freeuk.com> - 2024-08-09 11:04 +0100
                Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-09 19:12 +0200
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-12 15:36 +0100
                Re: how cast works? James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-08-09 13:57 -0400
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-09 21:59 +0100
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 14:47 -0700
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-10 00:32 +0100
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 17:12 -0700
                Re: how cast works? James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-08-09 18:29 -0400
                Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-13 11:18 +0200
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-13 11:34 +0100
                Re: how cast works? James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-08-13 07:51 -0400
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-13 14:01 +0100
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-13 12:46 -0700
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-13 21:51 +0100
                Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-13 16:46 -0700
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-14 00:56 +0100
                Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-18 03:37 -0700
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 14:29 -0700
                Re: how cast works? James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-08-09 18:35 -0400
                Re: how cast works? Kaz Kylheku <643-408-1753@kylheku.com> - 2024-08-09 21:30 +0000
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 14:57 -0700
                Re: how cast works? Kaz Kylheku <643-408-1753@kylheku.com> - 2024-08-09 23:14 +0000
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 16:58 -0700
                Re: how cast works? Kaz Kylheku <643-408-1753@kylheku.com> - 2024-08-10 00:06 +0000
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 17:27 -0700
                Re: how cast works? James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-08-09 20:31 -0400
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-10 01:11 +0100
                Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-13 11:23 +0200
                Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-11 17:32 -0700
                Re: how cast works? James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-08-09 18:35 -0400
                Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-11 17:27 -0700
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 12:23 -0700
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-09 21:31 +0100
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 13:49 -0700
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-09 22:01 +0100
                Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-12 00:33 -0700
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-12 12:21 +0100
              Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-11 17:46 -0700
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-12 02:00 +0100
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-11 20:23 -0700
                Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-11 20:37 -0700
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-11 21:33 -0700
                Re: how cast works? Ben Bacarisse <ben@bsb.me.uk> - 2024-08-12 16:57 +0100
                Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-12 10:04 -0700
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-12 13:35 -0700
            Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-09 07:57 -0300
              Re: how cast works? Bart <bc@freeuk.com> - 2024-08-09 16:25 +0100
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 12:06 -0700
              Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-09 19:20 +0200
                Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-09 15:54 -0300
                Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-09 16:05 -0300
                Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-09 21:43 +0200
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 13:28 -0700
                Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-09 22:01 +0200
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-10 11:17 +0100
                Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-10 10:15 -0300
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-10 17:14 +0100
                Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-10 20:01 -0300
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-10 17:10 -0700
                Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-11 09:23 -0300
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-11 13:30 +0100
                Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-11 14:16 -0300
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-11 13:38 -0700
                Re: how cast works? Bart <bc@freeuk.com> - 2024-08-12 12:24 +0100
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 13:26 -0700
                Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-09 18:01 -0300
                Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 14:53 -0700
              Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-09 12:03 -0700
                Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-09 16:22 -0300
          Re: how cast works? David Brown <david.brown@hesbynett.no> - 2024-08-09 00:36 +0200
    Re: how cast works? Dan Purgert <dan@djph.net> - 2024-08-08 14:08 +0000
    Re: how cast works? Lawrence D'Oliveiro <ldo@nz.invalid> - 2024-08-09 02:42 +0000
  Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-07 13:08 -0700
    Re: how cast works? Thiago Adams <thiago.adams@gmail.com> - 2024-08-08 08:35 -0300
      Re: how cast works? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-08 12:39 -0700
      Re: how cast works? James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-08-08 18:40 -0400
        Re: how cast works? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-11 17:15 -0700
    Is there an audio book version (Was: how cast works?) gazelle@shell.xmission.com (Kenny McCormack) - 2024-08-08 16:19 +0000
  Re: how cast works? Lawrence D'Oliveiro <ldo@nz.invalid> - 2024-08-07 23:03 +0000

csiph-web