comp.lang.ada
 help / color / mirror / Atom feed
* Integers and Mathematical Correctness
@ 2001-10-31 20:27 chris.danx
  2001-10-31 21:21 ` David C. Hoos
                   ` (7 more replies)
  0 siblings, 8 replies; 56+ messages in thread
From: chris.danx @ 2001-10-31 20:27 UTC (permalink / raw)


Hi,

To most this may seem insignificant but I'm more mathematically minded and I
just found something out.  Many programming languages don't implement
division properly!

For example -3/2 should be -2 not -1, with a remainder 1 not -1.

I'm trying to implement integer division the "proper" way (according to
Euclid), just for fun (and to provide a mathematically correct package for
anyone who gets annoyed by this).


The problem is this...

   type c_integer is new integer;

   function "/" (a, b : c_integer) return c_integer is
   begin
      return standard."/" (a, b); -- simple test of override
   end "/";

The line > standard."/" (a, b) doesn't work!  I check the RM and the "/" for
integers is defined in standard, but it's not accepting it (this is just a
simple stub, it doesn't implement division properly for negatives yet!!!
The div is correct for non-negatives though).

Note: this works

xxx : c_integer := c_integer(-3)/c_integer(2);

when the above function is commented out!

What small detail am I missing this time?

Thanks,
Chris





^ permalink raw reply	[flat|nested] 56+ messages in thread
* RE: Integers and Mathematical Correctness
@ 2001-10-31 22:42 Beard, Frank
  0 siblings, 0 replies; 56+ messages in thread
From: Beard, Frank @ 2001-10-31 22:42 UTC (permalink / raw)
  To: 'comp.lang.ada@ada.eu.org'


-----Original Message-----
From: chris.danx [mailto:chris.danx@ntlworld.com]

> why does
>
> xxx : c_integer := c_integer(-3)/c_integer(2);  work then?
                                  ^
Because --------------------------^ this operator
is inherited from integer for the new type.  This
division operator is for the new derived type
c_integer.  Remember "new" causes it to be treated as
a unique type (i.e. they can't be intermixed without
conversion).


>Is it not the same?
No, it's for the derived type.

Now if you did the following, it would be the same
(same being, it would use Standard integer).

xxx : c_integer := c_integer(-3/2);

or maybe

xxx : c_integer := c_integer(integer(-3)/integer(2));

The first may be universal integer, whereas, the second
is integer.

Frank



^ permalink raw reply	[flat|nested] 56+ messages in thread

end of thread, other threads:[~2014-10-02 11:10 UTC | newest]

Thread overview: 56+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-31 20:27 Integers and Mathematical Correctness chris.danx
2001-10-31 21:21 ` David C. Hoos
2001-10-31 22:16   ` chris.danx
2001-10-31 22:47     ` David C. Hoos
2001-10-31 22:55       ` chris.danx
2001-10-31 23:16         ` Matthew Heaney
2001-10-31 21:42 ` Mark Johnson
2001-11-01 18:57   ` Mark Johnson
2001-11-01 14:32 ` Wes Groleau
2001-11-01 16:18   ` wilhelm.spickermann
2001-11-01 16:48   ` chris.danx
2001-11-01 15:45 ` Charles Sampson
2001-11-01 16:20   ` Marin David Condic
2001-11-03 17:02     ` Richard Riehle
2001-11-05 14:47       ` Marin David Condic
2001-11-06  3:53         ` Eric G. Miller
2001-11-06  4:28           ` James Rogers
2001-11-06  6:06             ` peter
2001-11-06 14:48               ` James Rogers
2001-11-06 15:54                 ` Marin David Condic
2001-11-07  3:44             ` Eric G. Miller
2001-11-01 17:10   ` chris.danx
2001-11-01 17:52     ` Chad Robert Meiners
2001-11-01 19:02       ` chris.danx
2001-11-01 17:57     ` Wes Groleau
2001-11-03 14:57     ` Charles Sampson
2001-11-01 16:11 ` Charles Lindsey
2001-11-01 18:40   ` Wilhelm Spickermann
2001-11-01 19:18   ` chris.danx
2001-11-02  1:37     ` Steven Deller
2014-09-26  9:07       ` vincent.diemunsch
2014-09-26 16:38         ` Niklas Holsti
2014-09-26 16:58           ` AdaMagica
2014-09-26 17:51             ` Adam Beneschan
2014-09-27  9:01               ` AdaMagica
2014-09-27 10:15                 ` AdaMagica
2014-09-27 16:32                 ` Niklas Holsti
2014-09-27 16:49                   ` Jeffrey Carter
2014-09-27 18:52                     ` Niklas Holsti
2014-09-27 18:54                   ` Adam Beneschan
2014-09-27 19:07                     ` Adam Beneschan
     [not found]                 ` <3489504a-f82b-4fec-8a6c-7cb91854dd1e@googlegroups.com>
2014-09-27 19:21                   ` AdaMagica
2014-09-27 11:44           ` gautier_niouzes
2014-09-26 16:41         ` Adam Beneschan
2014-09-26 16:46         ` Adam Beneschan
2014-09-27 15:21           ` vincent.diemunsch
     [not found]             ` <34da5a39-9fa3-4e8e-a3f9-98f61a4ebcc7@googlegroups.com>
2014-09-28  7:47               ` Dmitry A. Kazakov
2014-09-29 14:58                 ` Adam Beneschan
2014-09-29 16:25                   ` Dmitry A. Kazakov
2014-10-01 19:48                   ` vincent.diemunsch
2014-10-02 11:10                     ` G.B.
2001-11-01 18:08 ` Tucker Taft
2001-11-01 18:54 ` David Starner
2001-11-01 21:44   ` Wilhelm Spickermann
2001-11-02 12:52 ` chris.danx
  -- strict thread matches above, loose matches on Subject: below --
2001-10-31 22:42 Beard, Frank

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox