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


Groups > comp.lang.forth > #21686

Re: Portability

From Bernd Paysan <bernd.paysan@gmx.de>
Newsgroups comp.lang.forth
Subject Re: Portability
Date 2013-04-16 22:33 +0200
Organization 1&1 Internet AG
Message-ID <kkkci2$q1f$1@online.de> (permalink)
References (7 earlier) <g5udnV5YkqvfSvjMnZ2dnUVZ_uKdnZ2d@supernews.com> <2013Apr11.152441@mips.complang.tuwien.ac.at> <kkgt30$311$1@dont-email.me> <kkh2c6$ijc$1@online.de> <6OudnQ-ztssOCfDMnZ2dnUVZ_tqdnZ2d@supernews.com>

Show all headers | View raw


Elizabeth D. Rather wrote:
> I don't remember general mixed arithmetic, but I do know that all the
> MOD words (MOD, /MOD, M/MOD, */MOD, etc.) featured an unsigned *divisor*
> at FORTH, Inc for many years. This made a cleaner implementation, and we
> never encountered a "real life" need for a signed mod divisor.

Nor do I.  I however encountered the need of a full-range unsigned mod 
divisor ([1..ffff]; this sort of integer arithmetics is very common on 16 
bit platforms), with a signed dividend.  Fortunately, you can trivially 
build that out of um/mod:

: m/mod ( d u -- umod nquot ) \ Forth Inc. style
  >r s>d r@ and + r> um/mod ;

> We
> changed in the 90's to be ANS compliant, having failed to persuade the
> TC of our point of view.

This is a bit funny, because there are already two possible signed 
divisions; adding a third one wouldn't have done more harm ;-).  Due to the 
different rounding, you can use the two standard divisions reliable only for 
two positive inputs, which means you could as well use um/mod.

The argument back then was that CPUs do have exactly these signed division 
instructions (especially with symmetric rounding), but however, CPUs do need 
some time for the overhead of correct sign treatment, too, and then, floored 
is almost equal, and Forth Inc.'s division mode is even faster.

The signed*unsigned multiplication is particularly handy, if you interpret 
your numbers as fractions in the range [0..1[, and then do a mixed singed-
unsigned multiplicatin and a NIP.  As above, you can easily use um* to 
define it:

: usm* ( u n -- d ) 2dup 0< and >r um* r> - ;

-- 
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://bernd-paysan.de/

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


Thread

 Portability kenney@cix.compulink.co.uk - 2013-04-06 04:12 -0500
  Re: Portability albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-04-06 11:31 +0000
    Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-06 10:34 -1000
      Re: Portability "Ed" <invalid@nospam.com> - 2013-04-09 09:56 +1000
        Re: Portability albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-04-09 01:30 +0000
          Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-09 07:21 +0000
            Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-08 22:18 -1000
              Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-09 12:41 +0000
                Re: Portability Coos Haak <chforth@hccnet.nl> - 2013-04-09 17:21 +0200
                Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-09 08:06 -1000
                Re: Portability Bernd Paysan <bernd.paysan@gmx.de> - 2013-04-09 22:34 +0200
                Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-09 12:05 -1000
                Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-09 14:19 -1000
                Re: Portability Chris <xrissmith@me.com> - 2013-04-09 20:45 -0700
                Re: Portability "Ed" <invalid@nospam.com> - 2013-04-10 14:02 +1000
                Re: Portability Hugh Aguilar <hughaguilar96@yahoo.com> - 2013-04-09 23:00 -0700
                Re: Portability "WJ" <w_a_x_man@yahoo.com> - 2013-04-12 14:41 +0000
                Re: Portability "Ed" <invalid@nospam.com> - 2013-04-13 15:34 +1000
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-10 15:19 +0000
                Re: Portability albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-04-10 11:46 +0000
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-10 15:03 +0000
                Re: Portability Hugh Aguilar <hughaguilar96@yahoo.com> - 2013-04-09 18:28 -0700
            Re: Portability Hugh Aguilar <hughaguilar96@yahoo.com> - 2013-04-09 17:00 -0700
          Re: Portability "Ed" <invalid@nospam.com> - 2013-04-10 13:00 +1000
            Re: Portability albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-04-10 11:55 +0000
              Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-10 10:10 -0500
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-10 15:56 +0000
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-10 16:18 -0500
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-11 13:24 +0000
                Re: Portability Hugh Aguilar <hughaguilar96@yahoo.com> - 2013-04-11 20:50 -0700
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-12 04:17 -0500
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-12 13:43 +0000
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-12 11:08 -0500
                Re: Portability albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-04-12 18:50 +0000
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-13 03:57 -0500
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-13 11:59 +0000
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-13 14:47 -0500
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-12 10:44 -0400
                Re: Portability Bernd Paysan <bernd.paysan@gmx.de> - 2013-04-15 16:20 +0200
                Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-16 08:12 -1000
                Re: Portability "A.K." <akk@nospam.org> - 2013-04-16 22:21 +0200
                Re: Portability Bernd Paysan <bernd.paysan@gmx.de> - 2013-04-16 22:33 +0200
                Re: Portability "Ed" <invalid@nospam.com> - 2013-04-19 15:04 +1000
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-15 15:46 +0000
                Re: Portability Sieur de Bienville <morrimichael@gmail.com> - 2013-04-15 19:19 -0700
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-16 12:53 +0000
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-16 17:29 -0400
                Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-16 11:44 -1000
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-16 18:00 -0400
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-16 17:33 -0500
                Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-16 12:46 -1000
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-17 13:09 -0400
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-17 12:20 -0500
                Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-17 07:38 -1000
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-17 16:43 -0500
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-17 20:03 -0400
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-18 16:53 -0500
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-18 18:02 -0400
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-19 03:30 -0500
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-19 15:31 -0400
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-22 09:59 +0000
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-22 07:28 -0500
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-22 15:27 +0000
                Re: Portability Hugh Aguilar <hughaguilar96@yahoo.com> - 2013-04-22 18:16 -0700
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-17 10:23 +0000
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-17 13:46 -0400
                Re: Portability anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-04-22 09:47 +0000
                Re: Portability Brad Eckert <hwfwguy@gmail.com> - 2013-04-17 10:32 -0700
                Re: Portability nobody@nowhere - 2013-04-17 17:36 +0000
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-17 14:21 -0400
                Re: Portability Brad Eckert <hwfwguy@gmail.com> - 2013-04-17 15:03 -0700
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-17 18:22 -0400
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-17 18:24 -0400
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-18 00:51 -0400
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-18 17:19 -0400
                Re: Portability Brad Eckert <hwfwguy@gmail.com> - 2013-04-19 12:37 -0700
                Re: Portability rickman <gnuarm@gmail.com> - 2013-04-19 15:53 -0400
                Re: Portability Lars Brinkhoff <lars.spam@nocrew.org> - 2013-04-17 19:26 +0200
                Re: Portability albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-04-10 18:50 +0000
                Re: Portability Bernd Paysan <bernd.paysan@gmx.de> - 2013-04-10 22:14 +0200
                Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-12 04:18 -0500
                Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-12 08:30 -1000
                Re: Portability albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-04-12 18:58 +0000
                Re: Portability "Elizabeth D. Rather" <erather@forth.com> - 2013-04-12 11:29 -1000
              Re: Portability "Ed" <invalid@nospam.com> - 2013-04-13 14:57 +1000
        Re: Portability Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-09 04:11 -0500

csiph-web