473,836 Members | 1,457 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Implementation of functions in math.h on clc-wiki

I'm writing a portable implementation of the C standard library for
http://www.clc-wiki.net and I was wondering if someone could check the
functions in math.h for sanity/portability/whatever. I'm almost halfway
through writing the over 200 functions needed to implement C99's
version of math.h, and I would like to have some feedback and/or expert
advice on my implementations .

Sincerely, Gregory Pietsch

Mar 11 '06
110 8635
[sci.math dropped. comp.lang.c should probably also be dropped, but
then where could this conversation be continued?]

On 2006-03-13, P.J. Plauger <pj*@dinkumware .com> wrote:
"Jordan Abel" <ra*******@gmai l.com> wrote in message
news:sl******** **************@ random.yi.org.. .
On 2006-03-13, P.J. Plauger <pj*@dinkumware .com> wrote:
Looks like you're working toward a constructive definition of
copyrightabilit y similar to Shannon's work on entropy in information
theory. The real world isn't so precise, since it's determined by
judges, lawyers, and jurors. If there's only two ways to express
something and two parties choose the same way, the odds are 50/50 that
neither party copied the other (or that one did indeed do so). If
there are twenty uncorrelated decisions, however, and all come down
the same way, the odds are one in a million that the match is
coincidental. You then check to see which expression predated the
other, then whether the author of the later work had access to the
earlier. etc. etc. In short, copyrightable is a concept along the
lines of portable; it just ain't black and white.
OK. Say that one party admits to copying the other. So it _is_ black and
white whether the author of the later work copied the earlier work.
There is still the question of whether this constitutes infringement.
_That_ is what I mean when I talk about copyrightabilit y.


If he admits he copied, he infringed. How much *damage* that caused
the wounded party is the stuff of litigation.
A work, or a part of a work, either is elegible for copyright or it is
not.


Nope, it just *is*. See my earlier post.


http://www.copyright.gov/circs/circ1.html says:

Several categories of material are generally not eligible for
federal copyright protection. These include among others:

* Works that have not been fixed in a tangible form of expression
(for example, choreographic works that have not been notated or recor-
ded, or improvisational speeches or performances that have not been
written or recorded)

* Titles, names, short phrases, and slogans; familiar symbols or
designs; mere variations of typographic ornamentation, lettering, or
coloring; mere listings of ingredients or contents

* Ideas, procedures, methods, systems, processes, concepts,
principles, discoveries, or devices, as distinguished from a des-
cription, explanation, or illustration

* Works consisting entirely of information that is common property
and containing no original authorship (for example: standard cal-
endars, height and weight charts, tape measures and rulers, and
lists or tables taken from public documents or other common sources)

Also: Works by the U. S. Government are not eligible for U. S.
copyright protection.
There's no "grey area status" for there to be a grey area as
far as I can tell, though there might be areas that still need to
be examined in a court of law.
The grey areas have to do with the nature of infringement, and the
damage that it causes.
And there have been some bizarre
decisions in the past [e.g. fonts]


I agree that some past decisions are bizarre, and fonts are a particularly
sorry case. (You can copyright the *name* of a font, but not all the work
you put into drawing all those pretty letters.)


You can trademark the name. What you can copyright is the font file, and
the data that went into it [hinting and so on]. But I'm sure that's what
you meant. I do agree that this should not be the case, and it was
the result of an unfortunate misunderstandin g which, I think, would
not have been made if the decision were being made now instead of in
1976.
But that's the law for you -- a product of fallible humans wrought
by contention. (Not unlike software, and NASCAR victories.)

P.J. Plauger
Dinkumware, Ltd.
http://www.dinkumware.com

Mar 13 '06 #71
[sci.math removed]
On 2006-03-13, P.J. Plauger <pj*@dinkumware .com> wrote:
"Jordan Abel" <ra*******@gmai l.com> wrote in message
news:sl******** **************@ random.yi.org.. .
On 2006-03-13, P.J. Plauger <pj*@dinkumware .com> wrote:
"Jordan Abel" <ra*******@gmai l.com> wrote in message
news:sl******** **************@ random.yi.org.. .

Shouldn't have let this one go by earlier:

[aside: given that the poem was written in 1920, it probably wasn't the
best example you might have used. But your point still stands, in
general]

I think it illustrates my overarching point beautifully -- that
the knowledge of copyright law among people who generate IP for
a living is spotty at best. You'll find that the copyrights on
Robert Frost's work are alive and earning money. Just try to
exploit his writings, even from 1920, without getting permission
from Henry Holt and Co. or Frost's estate. The law now says a
copyright extends for the life of the author plus 70 years.
Key word - the law _now_ says that. That law does not apply to works
whose copyright term of 75 years had already expired before it was
passed in 1998.

Of course, Frost lived until 1963, so it's probable that he continued
writing and that those works from after 1923 are still under copyright.


It's more than probable, it's certain. Read what I said again. A
copyright extends for the *life of the author* plus 70 years. The
day Frost died in 1963 it was the life of the author plus 50 years.


Was not. Copyright duration of life of the author plus 50 years was
defined in the Copyright Act of 1976, and did not apply to works
published before January 1st, 1978. Works published before January 1st,
1978 instead had their terms extended by 19 years to a total of 75.
Specifically, the length of the second term [that is, after renewal] was
extended from 28 to 47 years.
Even without your keyword, his stuff is still covered.
Not quite.
And you once again underscore my point -- people who generate IP
for a living are way too ignorant of copyright law for their own
good (or mine, for that matter).

Mar 13 '06 #72
In article <dv***********@ news3.infoave.n et>,
"Rod Pemberton" <do*********@so rry.bitbuck.cmm > wrote:
"P.J. Plauger" <pj*@dinkumware .com> wrote in message
news:bY******** ************@gi ganews.com...
"Rod Pemberton" <do*********@so rry.bitbuck.cmm > wrote in message
news:dv******** ***@news3.infoa ve.net...

I don't mind the copying of ideas, but I strongly oppose the
copying of expression. I make my living licensing, enhancing,
and supporting that expression.


So, one can use the exact same idea that you presented, as long as that
exact same idea is expressed in a completely different manner?


Copyright is about copying.

You can write anything you like, even if it ends up looking exactly the
same, but you cannot copy, and you cannot copy + modify, even if it
looks quite different afterwards.

The only importance of "looking the same" is that if two things are
looking the same, then it is much less likely that they have been
created independently.
Mar 13 '06 #73
"P.J. Plauger" <pj*@dinkumware .com> wrote in
news:OK******** *************** *******@giganew s.com:
But shucking and jiving aside, most of the time infringement is
pretty clear cut.


FWIW, I saw the OP before seeing your response to it. Having learned an
immense amount from your book (I think I bought it in 1997), having read
through the math.h chapter quite a few times, the first thought that
occurred to me when I saw the code posted on the wiki was "I wonder if
Plauger has given permission for his code to be used".

Sinan
--
A. Sinan Unur <1u**@llenroc.u de.invalid>
(remove .invalid and reverse each component for email address)
Mar 13 '06 #74
In article <qe************ ********@gigane ws.com>, P.J. Plauger
<pj*@dinkumware .com> wrote:
"Gregory Pietsch" <GK**@flash.net > wrote in message
news:11******** **************@ i39g2000cwa.goo glegroups.com.. .
I'm writing a portable implementation of the C standard library for
http://www.clc-wiki.net and I was wondering if someone could check the
functions in math.h for sanity/portability/whatever. I'm almost halfway
through writing the over 200 functions needed to implement C99's
version of math.h, and I would like to have some feedback and/or expert
advice on my implementations .


At a quick glance, I'd say you're violating my copyright in the
most blatant and irresponsible manner. If the infringing stuff
isn't off the internet in short order, I will be taking legal
action.


I'm going back to your original response for my remarks and questions.

At first I thought, "Oh, this is like SCO's suit against IBM". I
wondered what could possibly be in math.h which isn't obvious. I even
wondered whether you were THE P. J. Plauger, or whether the post was a
forgery.

I glanced at a couple of functions from the library, and the
implementations seemed straightforward . I assumed the constants came
from the Remez algorithm, which any competent graduate student could
implement and apply--or, as you note in a later post, you can use
Maple; in any case, I don't consider these to be very secret or
private. Surely they should be regarded as derivative of others' work.
There is an enormous literature on implementing mathematical functions
to the minimum number of ulps, even in extra-high precision [e.g. David
Bailey, the Gnu Multi-Precision Library]. Most of the algorithmic
stuff is open-literature (implementation s may be copyrighted, or more
usually "copylefted "), and are far deeper and more extensive than
anything I see in math.h. Such a literature is one of the advantages
of an academic establishment.)

But as the dialogue progressed, e.g. with _Dint, I began to realize
that some serious infringement HAD taken place. Now I begin to worry
about the SCO lawsuit; I surely hope Linus Torvalds documented his
work.

In particular, I was impressed by your defense of copyright as opposed
to software patents (which I have always found offensive--almost as
offensive as patenting sections of the human genome). I have no
argument that a small company like Dinkumware has to protect its
sources of revenue.

But as a mathematician and USER of software, I have to wonder what's
the point of isolating possible machine dependencies so precisely.
Every compiler I've ever used has come with its own math.h, and very
often I've adopted the chip maker's version to replace the standard
libraries (ESPECIALLY implementations of BLAS and LAPACK, which are
enormously more intricate). It's easy enough to write a script to
detect what platform the program is being compiled for, and to use
highly-optimized libraries for the particular platform.

So what would be the advantage, to me, of using Dinkumware's products?
Perhaps if I were a developer trying to get my product out on 18
different processors, I could see it; but even then, I'd HAVE to use a
compiler specific to each processor, and surely these will come with
their own libraries. Of course, these often have bugs (and the
perambulations in code necessary to circumvent bugs are notorious).

So I repeat, what's the point? (Understand, I've only ever developed
on the P4, the AMD64, and the PPC, so I may not fully appreciate the
difficulties.)

--Ron Bruck
Mar 13 '06 #75
Chip Eastham a écrit :
jacob navia wrote:
Gregory Pietsch a écrit :
I'm writing a portable implementation of the C standard library for
http://www.clc-wiki.net and I was wondering if someone could check the
functions in math.h for sanity/portability/whatever. I'm almost halfway
through writing the over 200 functions needed to implement C99's
version of math.h, and I would like to have some feedback and/or expert
advice on my implementations .

Sincerely, Gregory Pietsch


You write in math.h:

/* The <math.h> header shall provide for the following constants. The
values
are of type double and are accurate within the precision of the double
type.
*/

#define M_E (2.718281828459 045235360287471 3526624977572)
/* Value of e */
#define M_LOG2E (1.442695040888 963407359924681 0018921374266)
/* Value of log2e */

[snip]
#define M_SQRT1_2 (0.707106781186 547524400844362 1048490392848)
/* Value of 1/sqrt(2) */
---------------------------------------------------------------------


Hi, jacob:

You wrote (to complete the quoted material above):

Where do you have that from?

It is not in the C99 standard... Maybe in some other standard?

I have no idea how Gregory Pietsch went about preparing his math.h
or its "portable" implementation. The #define's above are consistent
with this math.h specification, copyright 1997 by The Open Group:

http://www.opengroup.org/onlinepubs/...sh/math.h.html

By C99 most writers seem to mean ISO/IEC 9899:1999 as amended
by a couple of corrections. See for example this page at gnu.org:

http://gcc.gnu.org/c99status.html

A rationale for the new standard and a copy of the working paper that
incorporates certain corrections are linked here:

http://www.open-std.org/JTC1/SC22/WG14/www/standards

This document has more than one hundred references to math.h,
many of them in Annex F on floating-point arithmetic.

Note copyrights in standards are often held by the bodies which
produce them. This is useful in maintaining the integrity of these
published works but often surprises those who expect "informatio n
should be free".

For this reason there is an official policy that printed copies of ISO
(International Organization for Standardization ) standards should be
obtained through ones national member organization, links to lists
of which are here:

http://www.iso.org/iso/en/aboutiso/i...ers/index.html

regards, chip


Thanks. I know now where they come from at least!

Mar 13 '06 #76

"P.J. Plauger" <pj*@dinkumware .com> wrote in message
news:yt******** *************** *******@giganew s.com...
"Rod Pemberton" <do*********@so rry.bitbuck.cmm > wrote in message
news:dv******** ***@news3.infoa ve.net...
"P.J. Plauger" <pj*@dinkumware .com> wrote in message
news:bY******** ************@gi ganews.com...
"Rod Pemberton" <do*********@so rry.bitbuck.cmm > wrote in message
news:dv******** ***@news3.infoa ve.net...

I don't mind the copying of ideas, but I strongly oppose the
copying of expression. I make my living licensing, enhancing,
and supporting that expression.


So, one can use the exact same idea that you presented, as long as that
exact same idea is expressed in a completely different manner?


Yes. That is sufficient, if not always necessary. I think you're
accusing me of saying it's always absolutely necessary. There
are degrees of acceptable difference, depending on the uniqueness
of each part of the expression.
Your use of _Dint was unique IMO. But, how exactly could one use that same idea without expressing it in the same unique manner?


Do you have to call it _Dint? There's no standard that says such
a critter exists. Does the first argument have to be a pointer
to double, and the second argument a signed integer bit offset?
Nothing like that in Fortran, IIRC. Do the return values have to
be defined in <math.h> as:

#define FP_INFINITE 2
#define FP_NAN 1
#define FP_NORMAL (-1)
#define FP_SUBNORMAL (-2)
#define FP_ZERO 0

(which was on the internet until a few hours ago, placed there
by a guy who asserted, "I'm writing a portable implementation of
the C standard library")? You might compare to this excerpt from
my <ymath.h>:

#define _DENORM (-2) /* C9X only */
#define _FINITE (-1)
#define _INFCODE 1
#define _NANCODE 2

(A little creativity there, but not much.) And so on, and so on.
None of these things *have* to be that way to implement the
clever idea of a fraction stripping function. So if you see a
ceil function that depends critically on a function spelled
the same way as yours, with the same signature as yours, with
almost identically the same return codes as yours -- with, in
fact, practically the same token sequence as yours -- is this
merely *evidence* of the possibility of infringement or is this
frigging infringement? I'd trust my fate to a dozen jurors
with no programming knowledge, just common sense, on that one.
You said you opposed
software patents, but yet it is very unlikely someone will be able to come up with a different manner to express the ideas of _Dint without using
your
exact form of expression.


As I understand it, you're attempting to secure an exclusive right to
control all forms of expression of your idea which is illegal. For you,
"degrees of acceptable difference" seems to be the key. He had a few
"degrees" of acceptable difference, but that was apparently insufficient as
you noted. So, let's say he reimplements your idea, which you claim is
perfectly acceptable, with the changes you suggested. Is that sufficient
"degrees of acceptable difference?" Or, will there be another round of
"it's still to close to my expression!" At what point does *his* expression
of *your* idea, become *his* lawful expression without granting you total
control of your idea, but only control of your expression? It's clear his
expression can't just paraphrase your expression. It's clear his expression
can't mildly obfuscate your expression. With your suggestions, it's clear
his expression needs major to extreme obfuscation in the expression of your
idea. Or, it needs a completely new method of implementation. In which
case, it's no longer your idea, but his idea and, you've gained an exclusive
right to all implementations of the idea.
Essentially, you have a software patent through copyright.


Bullshit.


Wether you believe me or not, I believe you have a software patent through
the use of a copyright. Copyright-misuse of this sort has resulted in
fortfeiture of copyright. I suspect you've never heard of copyright-misuse:
http://en.wikipedia.org/wiki/Copyright_misuse

Rod Pemberton
Mar 13 '06 #77
"Rod Pemberton" <do*********@so rry.bitbuck.cmm > wrote in message
news:dv******** ***@news3.infoa ve.net...
"P.J. Plauger" <pj*@dinkumware .com> wrote in message
news:yt******** *************** *******@giganew s.com...
"Rod Pemberton" <do*********@so rry.bitbuck.cmm > wrote in message
news:dv******** ***@news3.infoa ve.net...
> "P.J. Plauger" <pj*@dinkumware .com> wrote in message
> news:bY******** ************@gi ganews.com...
>> "Rod Pemberton" <do*********@so rry.bitbuck.cmm > wrote in message
>> news:dv******** ***@news3.infoa ve.net...
>>
>> I don't mind the copying of ideas, but I strongly oppose the
>> copying of expression. I make my living licensing, enhancing,
>> and supporting that expression.
>
> So, one can use the exact same idea that you presented, as long as that
> exact same idea is expressed in a completely different manner?
Yes. That is sufficient, if not always necessary. I think you're
accusing me of saying it's always absolutely necessary. There
are degrees of acceptable difference, depending on the uniqueness
of each part of the expression.
> Your use of _Dint was unique IMO. > But, how exactly could one use that same idea without expressing it in the > same unique manner?


Do you have to call it _Dint? There's no standard that says such
a critter exists. Does the first argument have to be a pointer
to double, and the second argument a signed integer bit offset?
Nothing like that in Fortran, IIRC. Do the return values have to
be defined in <math.h> as:

#define FP_INFINITE 2
#define FP_NAN 1
#define FP_NORMAL (-1)
#define FP_SUBNORMAL (-2)
#define FP_ZERO 0

(which was on the internet until a few hours ago, placed there
by a guy who asserted, "I'm writing a portable implementation of
the C standard library")? You might compare to this excerpt from
my <ymath.h>:

#define _DENORM (-2) /* C9X only */
#define _FINITE (-1)
#define _INFCODE 1
#define _NANCODE 2

(A little creativity there, but not much.) And so on, and so on.
None of these things *have* to be that way to implement the
clever idea of a fraction stripping function. So if you see a
ceil function that depends critically on a function spelled
the same way as yours, with the same signature as yours, with
almost identically the same return codes as yours -- with, in
fact, practically the same token sequence as yours -- is this
merely *evidence* of the possibility of infringement or is this
frigging infringement? I'd trust my fate to a dozen jurors
with no programming knowledge, just common sense, on that one.
> You said you opposed
> software patents, but yet it is very unlikely someone will be able to come > up with a different manner to express the ideas of _Dint without using
> your
> exact form of expression.


As I understand it, you're attempting to secure an exclusive right to
control all forms of expression of your idea which is illegal.


Then you don't understand it properly.
For you,
"degrees of acceptable difference" seems to be the key.
It's a useful guideline, yes.
He had a few
"degrees" of acceptable difference, but that was apparently insufficient
as
you noted. So, let's say he reimplements your idea, which you claim is
perfectly acceptable, with the changes you suggested. Is that sufficient
"degrees of acceptable difference?"
Maybe. I have to see the final version, since at this point I question
the OP's ability to distinguish infringing from non-infringing derivation.
Or, will there be another round of
"it's still to close to my expression!" At what point does *his*
expression
of *your* idea, become *his* lawful expression without granting you total
control of your idea, but only control of your expression?
In the extreme case, when a court of law dismisses my case or finds
in his favor. Operationally, when I know I don't have a snowball's
chance in hell of prevailing in court. Practically, when I and a
couple of my friends think he's brought enough new to the party.
It's clear his
expression can't just paraphrase your expression. It's clear his
expression
can't mildly obfuscate your expression. With your suggestions, it's
clear
his expression needs major to extreme obfuscation in the expression of
your
idea.
Obfuscation is a poor tool for proving uniqueness of expression,
since it slows comprehension severely.
Or, it needs a completely new method of implementation. In which
case, it's no longer your idea, but his idea and, you've gained an
exclusive
right to all implementations of the idea.


My, you do have a twisty way of thinking, don't you? You left out about
half a dozen sane and practical steps in the middle there, in your
haste to reach the stratosphere.
> Essentially, you have a software patent through copyright.


Bullshit.


Wether you believe me or not, I believe you have a software patent through
the use of a copyright. Copyright-misuse of this sort has resulted in
fortfeiture of copyright. I suspect you've never heard of
copyright-misuse:
http://en.wikipedia.org/wiki/Copyright_misuse


Stop hyperventilatin g.

P.J. Plauger
Dinkumware, Ltd.
http://www.dinkumware.com
Mar 13 '06 #78
"Ronald Bruck" <br***@math.usc .edu> wrote in message
news:1303200612 19545958%br***@ math.usc.edu...
In article <qe************ ********@gigane ws.com>, P.J. Plauger
<pj*@dinkumware .com> wrote:
"Gregory Pietsch" <GK**@flash.net > wrote in message
news:11******** **************@ i39g2000cwa.goo glegroups.com.. .
> I'm writing a portable implementation of the C standard library for
> http://www.clc-wiki.net and I was wondering if someone could check the
> functions in math.h for sanity/portability/whatever. I'm almost halfway
> through writing the over 200 functions needed to implement C99's
> version of math.h, and I would like to have some feedback and/or expert
> advice on my implementations .
At a quick glance, I'd say you're violating my copyright in the
most blatant and irresponsible manner. If the infringing stuff
isn't off the internet in short order, I will be taking legal
action.


I'm going back to your original response for my remarks and questions.

At first I thought, "Oh, this is like SCO's suit against IBM". I
wondered what could possibly be in math.h which isn't obvious.


Wow.
I even
wondered whether you were THE P. J. Plauger, or whether the post was a
forgery.

I glanced at a couple of functions from the library, and the
implementations seemed straightforward . I assumed the constants came
from the Remez algorithm, which any competent graduate student could
implement and apply--or, as you note in a later post, you can use
Maple; in any case, I don't consider these to be very secret or
private. Surely they should be regarded as derivative of others' work.
There is an enormous literature on implementing mathematical functions
to the minimum number of ulps, even in extra-high precision [e.g. David
Bailey, the Gnu Multi-Precision Library]. Most of the algorithmic
stuff is open-literature (implementation s may be copyrighted, or more
usually "copylefted "), and are far deeper and more extensive than
anything I see in math.h. Such a literature is one of the advantages
of an academic establishment.)
Us greedy capitalists read the literature too, y'know.
But as the dialogue progressed, e.g. with _Dint, I began to realize
that some serious infringement HAD taken place.
Thanks.
Now I begin to worry
about the SCO lawsuit; I surely hope Linus Torvalds documented his
work.
I think the issue is only loosely related, but what the hell, that's
his problem.
In particular, I was impressed by your defense of copyright as opposed
to software patents (which I have always found offensive--almost as
offensive as patenting sections of the human genome). I have no
argument that a small company like Dinkumware has to protect its
sources of revenue.
Thanks again.
But as a mathematician and USER of software, I have to wonder what's
the point of isolating possible machine dependencies so precisely.
Every compiler I've ever used has come with its own math.h, and very
often I've adopted the chip maker's version to replace the standard
libraries (ESPECIALLY implementations of BLAS and LAPACK, which are
enormously more intricate). It's easy enough to write a script to
detect what platform the program is being compiled for, and to use
highly-optimized libraries for the particular platform.
If the platform has them, perhaps.
So what would be the advantage, to me, of using Dinkumware's products?
Perhaps if I were a developer trying to get my product out on 18
different processors, I could see it; but even then, I'd HAVE to use a
compiler specific to each processor, and surely these will come with
their own libraries. Of course, these often have bugs (and the
perambulations in code necessary to circumvent bugs are notorious).

So I repeat, what's the point? (Understand, I've only ever developed
on the P4, the AMD64, and the PPC, so I may not fully appreciate the
difficulties.)


Evidently. You cited the most obvious -- bugs. We've developed what
I believe to be the best math testing harness in the business (and
in academia as well, from what I've seen so far). We've used it to
test all sorts of math libraries out there, and we've found all
sorts of problems. Don't get me wrong, the basic double math library
required by C89 is generally pretty good when you get it from the
likes of Microsoft, IBM, or Sun. But beyond that obvious quality
circle lies a mishmash. The evidence to date is that we test other
people's code way more than they do. That's particularly true of
open source. (It's a lot more fun to write new code and spread it
around the world with your name on it than it is to write tests
and run them.) We also use these tests to develop our own math
functions, of course, so we know they're good.

But if you don't care whether your math functions return correct
answers, it's fine to use whatever comes with your compiler.

Then there's the matter of completeness. We provide a complete
set of C99 math functions in all four IEEE precisions -- 24-bit,
53-bit, 64-bit, and 113-bit. Those compilers that pretend to
supply 24-bit float usually just wrap 53-bit double, so you get
no performance boost as you might expect. We've found a couple
of compilers that claim to support 64-bit long double, but
reliably deliver only 53-bit results. At the other extreme,
some 113-bit functions try way too hard, evidently because
their authors didn't know when to stop adding terms. We use
our tests to ensure a proper balance between accuracy and speed.

But if you're content to use just the C89 double math functions,
and you don't care about performance, you may not need anything
better.

What we offer, by contrast, is the assurance that you can use
our library on a variety of popular platforms, all the functions
you need are there, and they work right everywhere. To pull that
off we've had to be pretty inventive, over many years. You may
believe that the academic literature is a ready source of all
the information you need to knock out a decent math library,
but we know better. For one thing, it's still a big step from
most academic papers to good working code. For another, many
of the techniques we've tried from the literature over the past
several years have proved to be unstable, inaccurate, or simply
wrong.

We're just starting to build the competitive analysis part of
our web site to go with our new product launch. Soon you will
be able to see a few comparisons between our new library and
what comes with different compilers. And we'll provide a few
essays on the lesser known pitfalls of numerical computing.
Maybe then you'll see the point in licensing yet another
library when you already have one you've been using for years.

P.J. Plauger
Dinkumware, Ltd.
http://www.dinkumware.com
Mar 13 '06 #79
On 2006-03-13, P.J. Plauger <pj*@dinkumware .com> wrote:
"Rod Pemberton" <do*********@so rry.bitbuck.cmm > wrote in message
news:dv******** ***@news3.infoa ve.net...
> Essentially, you have a software patent through copyright.

Bullshit.


Wether you believe me or not, I believe you have a software patent through
the use of a copyright. Copyright-misuse of this sort has resulted in
fortfeiture of copyright. I suspect you've never heard of
copyright-misuse:
http://en.wikipedia.org/wiki/Copyright_misuse


Stop hyperventilatin g.


You _did_ suggest that you owned the idea of using a common function
with those particular side-effects and return values to implement a
floor and ceil function. Owning "ideas" is outside of copyright law. You
can own the specific token sequences implementing each function, but you
seem to think you own the idea of having a third function that works in
a particular way to do most of the work that is shared in common between
floor() and ceil(). (Note that even without this I don't dispute that
this was still infringement, but that it easily could have not been if
he'd implemented his own ceil(), even if he had still used a _Dint()
function.)

You said "some creativity, but not much", in comparing the #define's of
FP_* in his math.h vs your own differently-named constants internal to
_Dint. However, the token sequences "# define" and "( - 1 )" (etc)
clearly lack originality and are thus not copyrightable. The idea of
using -1 to represent normal, -2 to represent denormalised values, etc,
is an idea rather than an expression of an idea, and thus also not
copyrightable. What's left there? The names. Which he didn't use. I
think the basic disconnect here is that you do not understand the fact
that there do exist categories of works that are not eligible for
copyright protection.
Mar 13 '06 #80

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
2084
by: Robert Mark Bram | last post by:
Howdy All! I am trying to write a very brief comparison of the Date and Math objects in terms of instance v static objects. What I have below is my best so far. Any criticisms or suggestions are most welcome! Date is an instance object. You use Date by creating instances of it - you call methods on those instances. - you change data to do with each instance.
9
4658
by: Anon Email | last post by:
Hi people, I'm learning about header files in C++. The following is code from Bartosz Milewski: // Code const int maxStack = 16; class IStack
17
3636
by: cwdjrxyz | last post by:
Javascript has a very small math function list. However there is no reason that this list can not be extended greatly. Speed is not an issue, unless you nest complicated calculations several levels deep. In that case you need much more ram than a PC has to store functions calculated in loops so that you do not have to recalculate every time you cycle through the nest of loops. Using a HD for storage to extend ram is much too slow for many...
6
2144
by: sathyashrayan | last post by:
Following are the selected thread from the date:30-jan-2005 to 31-jan-2005. I did not use any name because of the subject is important. You can get the original thread by typing the subject "string" in google comp.lang.c archives.Hope this helps.Hope I am not bothering any one. am I? =================================Start=========================== subject: Return to Start of Line? Question: I'd like printf, the next printf, to return...
6
4479
by: Thomas Lumley | last post by:
What does the standard guarantee about the accuracy of eg the trigonometric functions? There is obviously an implementation-dependent upper bound on the accuracy, since the answer is stored in a double, but is this bound actually achieved? First, a simple example Suppose I want the arc cosine of -1, and use acos(-1.0) to compute it. The correct answer to 25 hexadecimal digits is -3.243F6A8885A308D313198A2E. This falls between two ...
8
2926
by: Sensei | last post by:
I have a quick question about the math library included in the standard C90 (and 99). The gcc, xlc and possibly other compilers/linkers on some unix platforms cannot use any math functions in math.h if a switch (-lm) is used, so *explicitly* having the linker use a file called libm.so or libm.a/dylib/whatever. Is it true on all the platforms? (answer: probably no)
5
2260
by: Ark | last post by:
Hi everyone, Does anyone know if Direct3D overloads System.Math functions? Also is it possible to access the base functions of the overloaded function (in other words restore original of the overlaoded function)? Thank you
1
2064
by: silellak | last post by:
I have found an odd error when using an XSL stylesheet transform. We have a Notes/Domino application with the following line of code in one of the stylesheets: <xsl:value-of select="format-number(number(ActEmpMoneyValue),'###,###0.00')" /> After transforming an XML document object with this stylesheet, the value in the XML node ActEmpMoneyValue is not calculated, but a flat value such as "19.31". After being processed as above on...
35
2357
by: Francine.Neary | last post by:
I'm finding it really hard to keep some of these things straight... For example, fputs is to puts as fprintf is to printf, except that fputs has the file handle at the end and fprintf at the beginning! Very illogical! And hard to remember. Now this can quite easily be corrected by macros, for example: #include <stdio.h> #define fputs(X,Y) fputs(Y,X)
17
2483
by: Jason Doucette | last post by:
I am converting a C-style unit into a C++ class. I have an implementation function that was defined in the .cpp file (so it was hidden from the interface that exists in the .h file). It uses a structure that is only needed by the implementation, so it were declared in the .cpp file, as well. Now, when converting this into a class, the class definition exists in the .h file, since it's required by the interface. The implementation...
0
9813
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9665
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10835
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10249
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9367
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7785
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6976
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5645
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
4007
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.