I dont usually read info pages since I have trouble navigating them.  But
reading what you quoted made clear what happened.

I would personally have preferred it if seq would notice when the increment
is not doing anything, and instead of producing infinite output, complained
and quit as it does when the starting value is too large.  The fact that it
does that in one case is part of why I thought it was a bug to not do it in
another.

But to be honest, I'd have implemented unlimited integers rather than using
floating point, perhaps by making it use Python under the covers, since
that's how Python normally works.  Well maybe I wouldn't do it that way in
coreutils....  But I'd do it.  It's not that hard if you're not doing
multiply or divide.

On Mon, Oct 29, 2018 at 4:00 PM C de-Avillez <hgg...@ubuntu.com> wrote:

> Hello Kevin, and thank you for opening this bug and helping make Ubuntu
> better.
>
> The info page for seq (info seq) has the following note:
>
> " On most systems, seq can produce whole-number output for values up to
> at least 2^{53}.  Larger integers are approximated.  The details differ
> depending on your floating-point implementation.  *Note Floating
> point::.  A common case is that ‘seq’ works with integers through
> 2^{64}, and larger integers may not be numerically correct:
>
>      $ seq 50000000000000000000 2 50000000000000000004
>      50000000000000000000
>      50000000000000000000
>      50000000000000000004
>
>    However, note that when limited to non-negative whole numbers, an
> increment of 1 and no format-specifying option, seq can print
> arbitrarily large numbers.
>
>    Be careful when using ‘seq’ with outlandish values: otherwise you may
> see surprising results, as ‘seq’ uses floating point internally.  For
> example, on the x86 platform, where the internal representation uses a
> 64-bit fraction, the command:
>
>      seq 1 0.0000000000000000001 1.0000000000000000009
>
>    outputs 1.0000000000000000007 twice and skips 1.0000000000000000008."
>
> Now, 2^64 is 18446744073709551616, which is *much* smaller than the
> values you are using. So... you are in the boundary of the map, where it
> is written "here be dragons."
>
> I ran 'seq' with your initial value, and increment of 1, and varying
> end-values, all larger than the initial value. All seemed to work
> correctly. But the moment I changed the increment... things went south
> very fast (including what seemed as an infinite loop, with 'seq'
> outputting the same value over and over).
>
> I am in a mind of closing this bug INVALID, but wanted to have your
> input before that.
>
> Thank you.
>
> ** Changed in: coreutils (Ubuntu)
>        Status: New => Incomplete
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1799868
>
> Title:
>   seq command has problems near its max integer
>
> Status in coreutils package in Ubuntu:
>   Incomplete
>
> Bug description:
>   I can use seq(1) to generate sequences of large numbers if I use the
>   default increment:
>
>   $ seq 170141183460469231731687303715884105721
> 170141183460469231731687303715884105725
>   170141183460469231731687303715884105721
>   170141183460469231731687303715884105722
>   170141183460469231731687303715884105723
>   170141183460469231731687303715884105724
>   170141183460469231731687303715884105725
>   $
>
>   However, if I use an increment of 2 (which should stop 2 short of the
> max int,) it starts with the max integer+1 (2^127) and outputs it forever:
>   $ seq 170141183460469231731687303715884105721 2
> 170141183460469231731687303715884105725 | less
>   170141183460469231731687303715884105728
>   170141183460469231731687303715884105728
>   170141183460469231731687303715884105728
>   170141183460469231731687303715884105728
>   .
>   .
>   .
>
>   ProblemType: Bug
>   DistroRelease: Ubuntu 18.04
>   Package: coreutils 8.28-1ubuntu1
>   ProcVersionSignature: Ubuntu 4.15.0-36.39-generic 4.15.18
>   Uname: Linux 4.15.0-36-generic x86_64
>   NonfreeKernelModules: nvidia_modeset nvidia
>   ApportVersion: 2.20.9-0ubuntu7.4
>   Architecture: amd64
>   CurrentDesktop: ubuntu:GNOME
>   Date: Wed Oct 24 20:17:15 2018
>   SourcePackage: coreutils
>   UpgradeStatus: Upgraded to bionic on 2018-08-19 (66 days ago)
>
> To manage notifications about this bug go to:
>
> https://bugs.launchpad.net/ubuntu/+source/coreutils/+bug/1799868/+subscriptions
>


-- 
Kevin O'Gorman
#define QUESTION ((bb) || (!bb))   /* Shakespeare */

Please consider the environment before printing this email.


** Attachment added: "unnamed"
   https://bugs.launchpad.net/bugs/1799868/+attachment/5207860/+files/unnamed

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to coreutils in Ubuntu.
https://bugs.launchpad.net/bugs/1799868

Title:
  seq command has problems near its max integer

Status in coreutils package in Ubuntu:
  Incomplete

Bug description:
  I can use seq(1) to generate sequences of large numbers if I use the
  default increment:

  $ seq 170141183460469231731687303715884105721 
170141183460469231731687303715884105725
  170141183460469231731687303715884105721
  170141183460469231731687303715884105722
  170141183460469231731687303715884105723
  170141183460469231731687303715884105724
  170141183460469231731687303715884105725
  $

  However, if I use an increment of 2 (which should stop 2 short of the max 
int,) it starts with the max integer+1 (2^127) and outputs it forever:
  $ seq 170141183460469231731687303715884105721 2 
170141183460469231731687303715884105725 | less
  170141183460469231731687303715884105728
  170141183460469231731687303715884105728
  170141183460469231731687303715884105728
  170141183460469231731687303715884105728
  .
  .
  .

  ProblemType: Bug
  DistroRelease: Ubuntu 18.04
  Package: coreutils 8.28-1ubuntu1
  ProcVersionSignature: Ubuntu 4.15.0-36.39-generic 4.15.18
  Uname: Linux 4.15.0-36-generic x86_64
  NonfreeKernelModules: nvidia_modeset nvidia
  ApportVersion: 2.20.9-0ubuntu7.4
  Architecture: amd64
  CurrentDesktop: ubuntu:GNOME
  Date: Wed Oct 24 20:17:15 2018
  SourcePackage: coreutils
  UpgradeStatus: Upgraded to bionic on 2018-08-19 (66 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/coreutils/+bug/1799868/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to