• Why GIMP Is Better Than Photoshop

    From Farley Flud@21:1/5 to All on Sat Jan 4 11:56:23 2025
    Photoshop, the name that hangs on every lackey asshole's lips,
    is actually severely limited in its bit depths.

    Photoshop, as well as other commercial garbage, only allows
    processing in 8, 16, or 32-bit (integer) depths.

    The mighty GIMP, otoh, offers 6, 16, 32-bit integer as well
    as 16 and 32-bit floating point and this is a HUGE difference
    in modern, cutting-edge processing.

    If you don't what all of this means then get out. You belong
    to the Photoshop idiot crowd.

    Photoshop is for brain-dead assholes.

    The GIMP is for creative innovators with the intelligence
    to match.


    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From DFS@21:1/5 to All on Sun Jan 5 10:53:31 2025
    On 1/4/2025 6:56 AM, Lying Lameass Larry Piet (posting as Farley Flud)
    wrote:

    Photoshop, the name that hangs on every lackey asshole's lips,
    is actually severely limited in its bit depths.

    Photoshop, as well as other commercial garbage, only allows
    processing in 8, 16, or 32-bit (integer) depths.

    The mighty GIMP, otoh, offers 6, 16, 32-bit integer as well
    as 16 and 32-bit floating point and this is a HUGE difference
    in modern, cutting-edge processing.

    Show us the visual difference, with your own code of course, "image
    processing expert" and "computing virtuoso" that can "program anything".



    If you don't what all of this means then get out. You belong
    to the Photoshop idiot crowd.

    Photoshop is for brain-dead assholes.

    And don't forget "C++ is for degenerate sissies" (according to you anyway).

    What an idiot.




    The GIMP is for creative innovators with the intelligence
    to match.


    "The GIMP people want me to implement netpbm HDR formats." - Feeb Sep 2022

    That was a voice in your head. Gimp devs are too smart to enlist help
    from a clown like you.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From -hh@21:1/5 to DFS on Sun Jan 5 15:51:51 2025
    On 1/5/25 10:53 AM, DFS wrote:
    On 1/4/2025 6:56 AM, Lying Lameass Larry Piet (posting as Farley Flud)
    wrote:

    Photoshop, the name that hangs on every lackey asshole's lips,
    is actually severely limited in its bit depths.

    Photoshop, as well as other commercial garbage, only allows
    processing in 8, 16, or 32-bit (integer) depths.

    The mighty GIMP, otoh, offers 6, 16, 32-bit integer as well
    as 16 and 32-bit floating point and this is a HUGE difference
    in modern, cutting-edge processing.

    Show us the visual difference, with your own code of course, "image processing expert" and "computing virtuoso" that can "program anything".

    While Feeb is at it, he needs to explain how & why it is significant for
    there to be floating point at all, since the input sensor is integer
    based: where is this necessary? Because without a clear need, it
    sounds more like sloppy/lazy programming and/or false features.

    Similarly, why 16 or 32 bits/channel is necessary when the human eye
    can't even biologically perceive that resolution (its considered to be
    10-12 bits/channel): did the GIMP programmers choose 16 because they
    chose an easy (lazy) way to get to the 10 or 12 bits/channel that's anthropometrically appropriate? Overkill results in sub-optimally
    larger file sizes.

    Finally, just what good is for this amount of overkill on color bit
    depth when there's not even the hardware to display the answer on?

    Specifically, who makes a 16 bit/channel computer monitors? Who makes
    32 bit ones? Name names/makes/models (and price). Because the last
    I've seen was 12 bits/channel in an expensive reference display; the
    mainstream 'State of the Shelf' is still at 8 bits/channel (plus there's
    still some 6 bit based displays which are faking 8 bits/channel - one manufacturer got hit with a lawsuit on that a few years ago).

    So even if humans could perceive 32 or 16 over 12 bits/channel, where's
    the hardware which can actually display more than 12 bits/channel?


    -hh

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to -hh on Sun Jan 5 22:10:00 2025
    On Sun, 5 Jan 2025 15:51:51 -0500, -hh wrote:


    While Feeb is at it, he needs to explain how & why it is significant for there to be floating point at all, since the input sensor is integer
    based: where is this necessary? Because without a clear need, it
    sounds more like sloppy/lazy programming and/or false features.


    Ha, ha, ha, ha, ha, ha, ha! What a total ignoramus!

    A base in integers completely sacrifices any fractional portions
    thereof, and therein lies the need for floating point representation.

    Check out the global standard, openexr:

    https://openexr.com/en/latest/about.html

    Photoshop is made for marketdroids, like you, that cannot see
    their digital hand in front of their digital face.

    (The same obtains for all Microslop software.)

    The GIMP is made for true scientific professionals.

    The case is closed.

    No amount of bickering from your ignoramus ass can alter the
    reality.


    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From -hh@21:1/5 to Farley Flud on Sun Jan 5 20:00:46 2025
    On 1/5/25 5:10 PM, Farley Flud wrote:
    On Sun, 5 Jan 2025 15:51:51 -0500, -hh wrote:


    While Feeb is at it, he needs to explain how & why it is significant for
    there to be floating point at all, since the input sensor is integer
    based: where is this necessary? Because without a clear need, it
    sounds more like sloppy/lazy programming and/or false features.


    Ha, ha, ha, ha, ha, ha, ha! What a total ignoramus!

    So you couldn't answer the questions.


    A base in integers completely sacrifices any fractional portions
    thereof, and therein lies the need for floating point representation.

    Except that those integers are already a fractionalization
    representation of color gradients across the three channels (RGB), so
    just what are you allegedly gaining by when adding even more decimal
    points which are going to be truncated off?


    Check out the global standard, openexr:

    https://openexr.com/en/latest/about.html

    Yeah, so what? Same question still applies: where's the value-added to
    the configuration that they've chosen? Do they have a financial
    interest at hard drive manufacturers for extra storage space?
    ...
    No amount of bickering from your ignoramus ass can alter the
    reality.

    Translation: Feeb once again snips the questions that he knows that he
    can't answer.



    -hh

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to -hh on Mon Jan 6 01:24:47 2025
    On Sun, 5 Jan 2025 15:51:51 -0500, -hh wrote:

    ... needs to explain how & why it is significant for
    there to be floating point at all, since the input sensor is integer
    based ...

    OpenEXR files are commonly used in CG these days, and they have floating-
    point numbers for each pixel component. They also allow for more than 3-4
    pixel components. The values still have their usual meaning, with 0 being
    full black and 1.0 being full white, but the values are allowed to go
    outside this range to avoid clipping of dynamic range.

    GIMP’s GEGL pixel engine deals natively with such things. Photoshop needs
    to use import/export filters which inevitably lose quality. This is
    probably why Adobe products are not used much in VFX work.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to -hh on Mon Jan 6 10:57:30 2025
    On Sun, 05 Jan 2025 20:00:46 -0500, -hh wrote:


    Except that those integers are already a fractionalization
    representation of color gradients across the three channels (RGB), so
    just what are you allegedly gaining by when adding even more decimal
    points which are going to be truncated off?


    OMFG! What an inane attempt at the defense of substandard software!

    I hope you are not on Adobe's payroll. They deserve better.

    But there can be no refutation. The absence of native floating point
    support makes Photoshop a highly deficient and substandard product.
    It can hardly be suitable for professional scientific image processing.

    The case is closed.

    No counter argument is possible, unless one is a rambling, deluded,
    psychotic.


    --
    Hail Linux! Hail FOSS! Hail Stallman!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From DFS@21:1/5 to All on Mon Jan 6 13:47:15 2025
    On 1/5/2025 5:10 PM, Lying Lameass Larry Piet (posting as Farley Flud)
    wrote:


    On Sun, 5 Jan 2025 15:51:51 -0500, -hh wrote:


    While Feeb is at it, he needs to explain how & why it is significant for
    there to be floating point at all, since the input sensor is integer
    based: where is this necessary? Because without a clear need, it
    sounds more like sloppy/lazy programming and/or false features.


    Ha, ha, ha, ha, ha, ha, ha! What a total ignoramus!

    A base in integers completely sacrifices any fractional portions
    thereof, and therein lies the need for floating point representation.

    Check out the global standard, openexr:

    https://openexr.com/en/latest/about.html

    Photoshop is made for marketdroids, like you, that cannot see
    their digital hand in front of their digital face.

    (The same obtains for all Microslop software.)

    The GIMP is made for true scientific professionals.

    The case is closed.

    No amount of bickering from your ignoramus ass can alter the
    reality.


    You don't deal in reality, Feeb. You deal in fraud, lies, ignorance,
    bragging, and the unreasonable promotion of inferior GuhNoo crapware.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrzej Matuch@21:1/5 to Joel on Mon Jan 6 13:54:01 2025
    On 2025-01-06 06:42, Joel wrote:
    Farley Flud <[email protected]> wrote:
    On Sun, 05 Jan 2025 20:00:46 -0500, -hh wrote:

    Except that those integers are already a fractionalization
    representation of color gradients across the three channels (RGB), so
    just what are you allegedly gaining by when adding even more decimal
    points which are going to be truncated off?

    OMFG! What an inane attempt at the defense of substandard software!

    I hope you are not on Adobe's payroll. They deserve better.

    But there can be no refutation. The absence of native floating point
    support makes Photoshop a highly deficient and substandard product.
    It can hardly be suitable for professional scientific image processing.

    The case is closed.

    No counter argument is possible, unless one is a rambling, deluded,
    psychotic.


    I'd almost be surprised you could load GIMP on your barebones setup.

    He started compiling GIMP a few months ago. He will get to use it in the
    next few weeks.

    --
    Andrzej (Andre) Matuch
    Telegram: @AndrzejMatuch
    Zephyrus G14 GA401QM on Fedora 41
    KDE supporting member

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From -hh@21:1/5 to Lawrence D'Oliveiro on Mon Jan 6 15:12:21 2025
    On 1/5/25 8:24 PM, Lawrence D'Oliveiro wrote:
    On Sun, 5 Jan 2025 15:51:51 -0500, -hh wrote:

    ... needs to explain how & why it is significant for
    there to be floating point at all, since the input sensor is integer
    based ...

    OpenEXR files are commonly used in CG these days, and they have floating- point numbers for each pixel component. They also allow for more than 3-4 pixel components. The values still have their usual meaning, with 0 being full black and 1.0 being full white, but the values are allowed to go
    outside this range to avoid clipping of dynamic range.

    Dynamic range is why to support more bits, but that's oblique to adding
    more intermediate values by using floating point instead of integer.
    For example, using 16 bits instead of 12 to address the perceivable
    spectrum range only is enough on its own to have more than a full order
    of magnitude greater than perceivable gradations.

    GIMP’s GEGL pixel engine deals natively with such things. Photoshop needs to use import/export filters which inevitably lose quality.

    But isn't integral vs modular just a software architectural design
    choice? Particularly since there's nothing inherent of one over the
    other for questions of if it is designed to be lossless or not/etc.


    This is probably why Adobe products are not used much in VFX work.

    Adobe's product here is probably After Effects, and it supports formats
    such as ProRes, where the originals are integer 10 or 12 bits/channel.

    For others, see:

    <https://www.actionvfx.com/blog/10-best-vfx-software-how-to-choose-what-s-best-for-you>


    -hh

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to -hh on Mon Jan 6 20:18:57 2025
    On Mon, 6 Jan 2025 15:12:21 -0500, -hh wrote:

    On 1/5/25 8:24 PM, Lawrence D'Oliveiro wrote:

    On Sun, 5 Jan 2025 15:51:51 -0500, -hh wrote:

    ... needs to explain how & why it is significant for there to be
    floating point at all, since the input sensor is integer based ...

    OpenEXR files are commonly used in CG these days, and they have
    floating- point numbers for each pixel component. They also allow for
    more than 3-4 pixel components. The values still have their usual
    meaning, with 0 being full black and 1.0 being full white, but the
    values are allowed to go outside this range to avoid clipping of
    dynamic range.

    Dynamic range is why to support more bits, but that's oblique to adding
    more intermediate values by using floating point instead of integer.

    That, too, seems to be important to them. You’d think single-precision
    floats would be enough, but no, they want the option for double-precision
    as well.

    GIMP’s GEGL pixel engine deals natively with such things. Photoshop
    needs to use import/export filters which inevitably lose quality.

    But isn't integral vs modular just a software architectural design
    choice?

    The limiting factor is what the native pixel engine can handle. And Photoshop’s one is pretty limited compared to GEGL.

    This is probably why Adobe products are not used much in VFX work.

    Adobe's product here is probably After Effects, and it supports formats
    such as ProRes, where the originals are integer 10 or 12 bits/channel.

    But it’s not a node-based compositor, is it? Even Blender can do better
    than that.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From -hh@21:1/5 to Lawrence D'Oliveiro on Mon Jan 6 15:59:14 2025
    On 1/6/25 3:18 PM, Lawrence D'Oliveiro wrote:
    On Mon, 6 Jan 2025 15:12:21 -0500, -hh wrote:

    On 1/5/25 8:24 PM, Lawrence D'Oliveiro wrote:

    On Sun, 5 Jan 2025 15:51:51 -0500, -hh wrote:

    ... needs to explain how & why it is significant for there to be
    floating point at all, since the input sensor is integer based ...

    OpenEXR files are commonly used in CG these days, and they have
    floating- point numbers for each pixel component. They also allow for
    more than 3-4 pixel components. The values still have their usual
    meaning, with 0 being full black and 1.0 being full white, but the
    values are allowed to go outside this range to avoid clipping of
    dynamic range.

    Dynamic range is why to support more bits, but that's oblique to adding
    more intermediate values by using floating point instead of integer.

    That, too, seems to be important to them. You’d think single-precision floats would be enough, but no, they want the option for double-precision
    as well.

    Let's see a product output from each and if the alleged differences are
    even perceptible by humans (without pixel peeping, of course).


    GIMP’s GEGL pixel engine deals natively with such things. Photoshop
    needs to use import/export filters which inevitably lose quality.

    But isn't integral vs modular just a software architectural design
    choice?

    The limiting factor is what the native pixel engine can handle. And Photoshop’s one is pretty limited compared to GEGL.

    Yet both are limited by what the original image source is too: when one
    only has 10-12-14 bits/channel, it requires gyrations to claim that
    double precision 32 bit floating point is going to be noticeable.


    This is probably why Adobe products are not used much in VFX work.

    Adobe's product here is probably After Effects, and it supports formats
    such as ProRes, where the originals are integer 10 or 12 bits/channel.

    But it’s not a node-based compositor, is it? Even Blender can do better than that.

    Don't really know yet, as I've been more stills-centric than video, with effectively all of it being reality-based instead of fake.

    -hh

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to -hh on Mon Jan 6 22:33:19 2025
    On Mon, 6 Jan 2025 15:59:14 -0500, -hh wrote:

    On 1/6/25 3:18 PM, Lawrence D'Oliveiro wrote:

    On Mon, 6 Jan 2025 15:12:21 -0500, -hh wrote:

    On 1/5/25 8:24 PM, Lawrence D'Oliveiro wrote:

    GIMP’s GEGL pixel engine deals natively with such things. Photoshop
    needs to use import/export filters which inevitably lose quality.

    But isn't integral vs modular just a software architectural design
    choice?

    The limiting factor is what the native pixel engine can handle. And
    Photoshop’s one is pretty limited compared to GEGL.

    Yet both are limited by what the original image source is too ...

    The “image source” is here computer-generated images, with potentially
    very high dynamic range.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From -hh@21:1/5 to Lawrence D'Oliveiro on Mon Jan 6 19:49:15 2025
    On 1/6/25 5:33 PM, Lawrence D'Oliveiro wrote:
    On Mon, 6 Jan 2025 15:59:14 -0500, -hh wrote:

    On 1/6/25 3:18 PM, Lawrence D'Oliveiro wrote:

    On Mon, 6 Jan 2025 15:12:21 -0500, -hh wrote:

    On 1/5/25 8:24 PM, Lawrence D'Oliveiro wrote:

    GIMP’s GEGL pixel engine deals natively with such things. Photoshop >>>>> needs to use import/export filters which inevitably lose quality.

    But isn't integral vs modular just a software architectural design
    choice?

    The limiting factor is what the native pixel engine can handle. And
    Photoshop’s one is pretty limited compared to GEGL.

    Yet both are limited by what the original image source is too ...

    The “image source” is here computer-generated images, with potentially very high dynamic range.

    Which means fictional, not reality. And trying to use ~3x more bits of
    data than a human can perceive is an inefficient waste of resources.


    -hh

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to -hh on Tue Jan 7 02:05:45 2025
    On Mon, 6 Jan 2025 19:49:15 -0500, -hh wrote:

    On 1/6/25 5:33 PM, Lawrence D'Oliveiro wrote:

    The “image source” is here computer-generated images, with potentially >> very high dynamic range.

    Which means fictional, not reality.

    How do you tell? The technology has long passed the point where CG could
    be reliably identifed as CG; now you can only tell if they want you to
    tell.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to -hh on Tue Jan 7 11:10:58 2025
    On Mon, 06 Jan 2025 19:49:15 -0500, -hh wrote:


    Which means fictional, not reality. And trying to use ~3x more bits of
    data than a human can perceive is an inefficient waste of resources.


    That's right! Keep on fighting! Give 'em hell! Don't let up!

    Then maybe some day, with a bit of extaordinary luck, you just may convince some derelict at the retard clinic to share in your technical delusions.

    Ha, ha, ha, ha, ha, ha, ha, ha, ha, ha, ha!

    In the meantime, however, GNU/Linux/FOSS will just keep on exuding its
    total superiority.



    --
    Hail Linux! Hail FOSS! Hail Stallman!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to Physfitfreak on Wed Jan 8 10:57:36 2025
    On Tue, 7 Jan 2025 17:34:24 -0600, Physfitfreak wrote:


    Linux' superiority disappeared when I connected a Canon Pixma 2520 scanner-printer combo to it.


    https://www.quora.com/How-do-I-install-a-Canon-MG2520-printer-in-Ubuntu









    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to Physfitfreak on Wed Jan 8 21:31:15 2025
    On Wed, 8 Jan 2025 14:48:18 -0600, Physfitfreak wrote:


    And that's the problem. What you gave a link for, if indeed successful,
    only shows that the solution is out there somewhere. And this is the
    problem. This is why Windows rules over Linux. The existence of a
    solution is not good enough. User can only click on "install."


    That is true.

    But GNU/Linux has always been for those who have the knowledge/
    experience to overcome those problems. IOW, GNU/Linux is not
    really appropriate for the "unwashed masses."

    The distros try to make it more foolproof, but, largely because
    of vendor reticence, they cannot always succeed.

    As I indicated in an earlier post, the GNU/Linux user should
    always research compatibility issues BEFORE acquiring hardware.





    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to Physfitfreak on Wed Jan 8 22:43:15 2025
    On Wed, 8 Jan 2025 16:11:00 -0600, Physfitfreak wrote:


    Linux, by now, should've been and become "really appropriate" for the unwashed masses.


    Nope. GNU/Linux is not a single organized entity. It is a disjoint
    collection of volunteer activity that remarkably, due to its Unix
    foundation, holds together quite well.

    However, the ongoing problem is the reluctance of hardware manufacturers
    either to supply GNU/Linux drivers or to provide open specs for volunteer developers. For this reluctance, GNU/Linux cannot be blamed.

    The GNU/Linux user must always be willing to do the preliminary compatibility research or else he may be unsatisfied.

    GNU/Linux never was intended for the unwashed masses and never will be
    for the unwashed masses. Success in this area would actually mean the destruction of GNU/Linux as a superior OS.



    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From rbowman@21:1/5 to Farley Flud on Thu Jan 9 00:56:35 2025
    On Wed, 08 Jan 2025 22:43:15 +0000, Farley Flud wrote:

    On Wed, 8 Jan 2025 16:11:00 -0600, Physfitfreak wrote:


    Linux, by now, should've been and become "really appropriate" for the
    unwashed masses.


    Nope. GNU/Linux is not a single organized entity. It is a disjoint collection of volunteer activity that remarkably, due to its Unix
    foundation, holds together quite well.

    However, the ongoing problem is the reluctance of hardware manufacturers either to supply GNU/Linux drivers or to provide open specs for
    volunteer developers. For this reluctance, GNU/Linux cannot be blamed.

    The GNU/Linux user must always be willing to do the preliminary
    compatibility research or else he may be unsatisfied.

    GNU/Linux never was intended for the unwashed masses and never will be
    for the unwashed masses. Success in this area would actually mean the destruction of GNU/Linux as a superior OS.


    Did you make some sort of New Years resolution about posting well-stated observations rather than the usual insults? Please keep up the good work.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From DFS@21:1/5 to Physfitfreak on Thu Jan 9 23:47:10 2025
    On 1/9/2025 9:36 PM, Physfitfreak wrote:
    On 1/8/25 6:56 PM, rbowman wrote:
    On Wed, 08 Jan 2025 22:43:15 +0000, Farley Flud wrote:

    On Wed, 8 Jan 2025 16:11:00 -0600, Physfitfreak wrote:


    Linux, by now, should've been and become "really appropriate" for the
    unwashed masses.


    Nope.  GNU/Linux is not a single organized entity.  It is a disjoint
    collection of volunteer activity that remarkably, due to its Unix
    foundation, holds together quite well.

    However, the ongoing problem is the reluctance of hardware manufacturers >>> either to supply GNU/Linux drivers or to provide open specs for
    volunteer developers.  For this reluctance, GNU/Linux cannot be blamed. >>>
    The GNU/Linux user must always be willing to do the preliminary
    compatibility research or else he may be unsatisfied.

    GNU/Linux never was intended for the unwashed masses and never will be
    for the unwashed masses.  Success in this area would actually mean the
    destruction of GNU/Linux as a superior OS.


    Did you make some sort of New Years resolution about posting well-stated
    observations rather than the usual insults? Please keep up the good work.


    Translation: "Physfit has something that I, rbowman, intensely covet."


    bowman was replying to Feeb, oskol.



    At least you don't have DFS's predicament. That sorry ass's emotional
    support in life comes from nothing other than my dick.

    muh dik... muh dik... muh dik... muh dik...

    wtf is wrong with you, kun kesh?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to Physfitfreak on Fri Jan 10 08:43:30 2025
    On Thu, 9 Jan 2025 20:36:54 -0600, Physfitfreak wrote:


    At least you don't have DFS's predicament. That sorry ass's emotional
    support in life comes from nothing other than my dick.


    He's only got 3 inches. Couple that with an IQ of 85 and he'll
    be peeking in the pants of almost everybody.





    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From DFS@21:1/5 to Lameass Larry on Fri Jan 10 11:18:42 2025
    On 1/10/2025 3:43 AM, Lameass Larry wrote:

    On Thu, 9 Jan 2025 20:36:54 -0600, Physfitfreak wrote:


    At least you don't have DFS's predicament. That sorry ass's emotional
    support in life comes from nothing other than my dick.


    He's only got 3 inches. Couple that with an IQ of 85 and he'll
    be peeking in the pants of almost everybody.


    The high quality myth:

    computing virtuoso
    C Programmer Extraordinaire
    assembly language genius
    Perl guru
    I can program ANYTHING
    seasoned and worldly programmer
    REAL PROGRAMMER



    The low quality reality:

    https://imgur.com/a/fabian-writes-tax-program-is-promptly-fired-incompetence-JWTIK

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From DFS@21:1/5 to Physfitfreak on Sat Jan 11 11:12:00 2025
    On 1/11/2025 1:53 AM, Physfitfreak wrote:


    Score of 85 might be a bit too harsh in his case, but I have no doubt
    that he's around the average IQ but on the dumb side of that average;
    never on the other side. That, I'm sure.

    Get ready Maleki.

    ========================================================================================
    //this code is hereby released to the public domain

    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <time.h>


    /*
    this program computes the descriptive statistics of sets of integers

    1.0 release Dec 2020
    2.0 release Jun 2024

    used the population skewness and Kurtosis formulas from:

    https://www.calculatorsoup.com/calculators/statistics/descriptivestatistics.php
    also test the results of this code against that site

    compile:
    $ gcc -Wall prog.c -o prog -lm
    or
    $ gcc -Wall -Wextra -O2 prog.c -o prog -lm
    or
    $ gcc -Wall -Wextra -O2 -fsanitize=undefined prog.c -o prog
    -lm

    usage : ./prog -option N
    where option is:
    -r generates N random numbers
    -c generates consecutive numbers 1 to N
    -o generates random numbers with outliers
    -f read in dataset from file
    and N is 2+ or the file name
    */


    //random ints
    int randNbr(int low, int high) {
    return (low + rand() / (RAND_MAX / (high - low + 1) + 1));
    }

    //comparator function used with qsort
    int compareint (const void * a, const void * b)
    {
    if (*(int*)a > *(int*)b) return 1;
    else if (*(int*)a < *(int*)b) return -1;
    else return 0;
    }


    int main(int argc, char *argv[])
    {
    if(argc < 3) {
    printf("Missing argument:\n");
    printf(" * enter a number greater than 2\n");
    printf(" * enter an option -r -c -o or -f\n");
    exit(0);
    }


    //=================================================================================================
    //generate datasets
    //=================================================================================================

    int i = 0, N = 0;
    int *nums;
    if(strcmp(argv[1],"-f") != 0) {
    N = atoi(argv[2]);
    nums = malloc(N * sizeof(int));
    }

    //random
    if(strcmp(argv[1],"-r") == 0) {
    srand(time(NULL));
    for(i=0;i<N;i++) { nums[i] = randNbr(1,N*3); }

    printf("%d Randoms between 1 and %d\n", N, 3*N);
    for(i=0;i<N;i++) { printf("%d ", nums[i]); }
    qsort(nums,N,sizeof(int),compareint);
    printf("\nSorted:\n"); for(i=0;i<N;i++) { printf("%d ", nums[i]); }
    }

    //random with outliers
    if(strcmp(argv[1],"-o") == 0) {
    srand(time(NULL));
    nums[0] = 1; nums[1] = 3;
    for(i=2;i<N-2;i++) { nums[i] = randNbr(100,N*30); }
    nums[N-2] = 1000; nums[N-1] = 2000;

    printf("%d Randoms with outliers\n", N);
    for(i=0;i<N;i++) { printf("%d ", nums[i]); }
    qsort(nums,N,sizeof(int),compareint);
    printf("\nSorted:\n"); for(i=0;i<N;i++) { printf("%d ", nums[i]); }
    }


    //consecutive numbers 1 to N
    if(strcmp(argv[1],"-c") == 0) {
    printf("%d Consecutive\n", N);
    for(i=0;i<N;i++) {
    nums[i] = i + 1;
    printf("%d ", nums[i]);
    }
    }


    //read dataset from file
    if(strcmp(argv[1],"-f") == 0) {
    nums = malloc(2 * sizeof(int));
    FILE* datafile = fopen(argv[2], "r");
    while(fscanf(datafile, "%d", &nums[N++]) == 1){
    nums = realloc(nums, (N+1) * sizeof(int));
    }
    fclose (datafile);
    N--;
    printf("%d from file\n", N);
    for(i=0;i<N;i++) { printf("%d ", nums[i]); }
    qsort(nums,N,sizeof(int),compareint);
    printf("\nSorted:\n"); for(i=0;i<N;i++) { printf("%d ", nums[i]); }
    }


    //=================================================================================================
    //calc descriptive stats
    //=================================================================================================
    double dmin = nums[0], dmax = nums[N-1];
    double sumN=0.0, median=0.0, Q1=0.0, Q2=0.0, Q3=0.0, IQR=0.0;
    double diff = 0.0, sqrdiffmean = 0.0, cubediffmean = 0.0, quaddiffmean = 0.0;
    double meanabsdev = 0.0, rootmeansqr = 0.0;
    char temp[15]="";

    for(i=0;i<N;i++) {sumN += nums[i];}
    double mean = sumN / (double)N;
    for(i = 0; i < N; i++)
    {
    diff = nums[i] - mean;
    sqrdiffmean += diff * diff ; // for variance and sum squares
    cubediffmean += diff * diff * diff ; // for skewness
    quaddiffmean += diff * diff * diff * diff ; // for Kurtosis
    meanabsdev += fabs(diff) ; // for mean absolute deviation
    rootmeansqr += nums[i] * nums[i] ; // for root mean square
    }

    double stddev = sqrt(sqrdiffmean/N);
    double skewness = cubediffmean / (N * pow(stddev,3));
    double kurtosis = quaddiffmean / (N * pow(stddev,4));

    // median and quartiles
    // quartiles divide sorted dataset into four sections
    // Q1 = median of values less than Q2
    // Q2 = median of the data set
    // Q3 = median of values greater than Q2
    if(N % 2 == 0) {
    Q2 = median = (nums[(N/2)-1] + nums[N/2]) / 2.0;
    i = N/2;
    if(i % 2 == 0) {
    Q1 = (nums[(i/2)-1] + nums[i/2]) / 2.0;
    Q3 = (nums[i + ((i-1)/2)] + nums[i+(i/2)]) / 2.0;
    }
    else {
    Q1 = nums[(i-1)/2];
    Q3 = nums[i + ((i-1)/2)];
    }
    }

    if(N % 2 != 0) {
    Q2 = median = nums[(N-1)/2];
    i = (N-1)/2;
    if(i % 2 == 0) {
    Q1 = (nums[(i/2)-1] + nums[i/2]) / 2.0;
    Q3 = (nums[i + (i/2)] + nums[i + (i/2) + 1]) / 2.0;
    }
    else {
    Q1 = nums[(i-1)/2];
    Q3 = nums[i + ((i+1)/2)];
    }
    }

    //mode
    //1 array to hold count of each value in set
    //2 count how many times each number in the set occurs,
    // and track the # of occurrences
    //3 extract the values occurring most often
    int occur = 0;
    char mode[250] = "";
    if(strcmp(argv[2],"-c") != 0) { //consecutive #s have no mode
    int *modecnt = calloc(dmax + 1, sizeof(int)); //array
    for(i = 0; i < N; i++) { //count occurrences of each value
    modecnt[nums[i]]++;
    if(modecnt[nums[i]] > occur) {
    occur = modecnt[nums[i]];
    }
    }
    if (occur > 1) { //extract modes if any
    for(i = 0; i <= dmax; i++) {
    if(modecnt[i] == occur) {
    sprintf(temp,"%d ",i);
    strncat(mode,temp,strlen(temp));
    }
    }
    }
    free(modecnt);
    }

    // outliers
    // below Q1−1.5xIQR, or above Q3+1.5xIQR
    IQR = Q3 - Q1;
    char outliers[200]="";
    if (N > 3) {

    //range for outliers
    double lo = Q1 - (1.5 * IQR);
    double hi = Q3 + (1.5 * IQR);

    //no outliers
    if (dmin >= lo && dmax <= hi) {
    strcat(outliers,"none (using IQR * 1.5 rule)");
    }

    //at least one outlier
    if (dmin < lo || dmax > hi) {
    for(i = 0; i < N; i++) {
    double val = (double)nums[i];
    if(val < lo || val > hi) {
    sprintf(temp,"%.0f ",val);
    strncat(outliers, temp, strlen(temp));
    }
    }
    strcat(outliers," (using IQR * 1.5 rule)");
    }
    outliers[strlen(outliers)] = '\0';
    }


    //=================================================================================================
    //output
    //=================================================================================================

    printf("\n--------------------------------------------------------------\n");
    printf("Minimum : %.0f\n", dmin);
    printf("Maximum : %.0f\n", dmax);
    printf("Range : %.0f\n", dmax - dmin);
    printf("Size N : %d\n" , N);
    printf("Sum N : %.0f\n", sumN);
    printf("Mean μ : %.2f\n", mean);
    printf("Median : %.1f\n", median);
    if(occur > 1) {
    printf("Mode(s) : %s (%d occurrences ea)\n", mode,occur);}
    else {
    printf("Mode(s) : na (no repeating values)\n");}
    printf("Std Dev σ : %.6f\n", stddev);
    printf("Variance σ^2 : %.6f\n", sqrdiffmean/N);
    printf("Mid Range : %.1f\n", (dmax + dmin)/2);
    printf("Quartiles");
    if(N > 3) {printf(" Q1: %.1f\n", Q1);}
    if(N < 4) {printf(" Q1: na\n");}
    printf(" Q2: %.1f (median)\n", Q2);
    if(N > 3) {printf(" Q3: %.1f\n", Q3);}
    if(N < 4) {printf(" Q3: na\n");}
    printf("IQR : %.1f (interquartile range)\n", IQR);
    if(N > 3) {printf("Outliers : %s\n", outliers);}
    if(N < 4) {printf("Outliers : na\n");}
    printf("Sum Squares SS : %.6f\n", sqrdiffmean);
    printf("MAD : %.6f (mean absolute deviation)\n", meanabsdev / N);
    printf("Root Mean Sqr : %.6f\n", sqrt(rootmeansqr / N));
    printf("Std Error Mean : %.6f\n", stddev / sqrt(N));
    printf("Skewness γ1 : %.6f\n", skewness);
    printf("Kurtosis β2 : %.6f\n", kurtosis);
    printf("Kurtosis Excess α4 : %.6f\n", kurtosis - 3);
    printf("CV : %.8f (coefficient of variation\n", stddev / mean);
    printf("RSD : %.6f%% (relative std deviation)\n", 100 * (stddev / mean));
    printf("--------------------------------------------------------------\n");
    printf("Check results up to N=9999 against\n");
    printf("https://www.calculatorsoup.com/calculators/statistics/descriptivestatistics.php");
    printf("\n\n");

    free(nums);

    return(0);
    } ========================================================================================


    OMG that's sweet! The ONLY part not 100% mine from scratch is the
    4-line comparator function.

    That's pure pwnage of the programming clowns Mehram Maleki (you) and
    Larry Pietraskiewicz (Feeb).



    His closest "buddy" in here is the brain-dead Relf..

    No, though I did like Relf and will miss his odd posts. I learned a bit
    about Usenet from him.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)