Thanks. The issues you raise:

1) The mpir-parallel svn branch contains LGPL v3+ code. However, this
was branched from MPIR 2.0.0, which is already LGPL v3+, so this is
absolutely fine.

2) Brian Gladman's version of mpf/set_str.c contains some code the
same as the version in GMP 5. This is because they are both derived
from the same LGPL v2.1+ code in GMP 4.2.1. Brian's version is
*entirely* LGPL v2.1+ and contains no v3+ code. So this is again fine.

So svn is not an issue.

The issue is supposedly tarballs distributed on the MPIR website.

I find:

MPIR 2.0.0 is LGPL v3+ (prominently noted)

MPIR 1.3.x are LGPL v2+ (contains absolutely zero LGPL v3+ code)

MPIR 1.2.x are LGPL v3+ (tarball contains lgpl-v3.txt and gpl-v3.txt
and mpf/set_str.c is licensed v3+ - prominent note about this on
website)
MPIR 1.1.x are LGPL v3+ (tarball contains lgpl-v3.txt and gpl-v3.txt
and mpf/set_str.c is licensed v3+ - prominent note about this on
website)
MPIR 1.0.x are LGPL v3+ (tarball contains lgpl-v3.txt and gpl-v3.txt
and mpf/set_str.c is licensed v3+ - prominent note about this on
website)
MPIR 0.9.x are LGPL v3+ (tarball contains lgpl-v3.txt and gpl-v3.txt
and mpf/set_str.c is licensed v3+ - prominent note about this on
website)

I am certainly not aware of any renamed GMP's with license reverted to
v2.1+. The claims are patently false, as we've reiterated numerous
times.

Bill.

On 4 May 2010 19:13, Antony Vennard <antony.venn...@gmail.com> wrote:
> I apologise in advance for the length of this email.
>
> Ok, I've checked out the entire svn.
>
> grep -ir "lgplv3" * gives:
>
> branches/mpir-parallel/mpn/x86_64/.svn/text-base/mulmid_basecase.asm.svn-base:dnl
>  LGPLv3+, license terms reproduced below. These modifications are hereby
> branches/mpir-parallel/mpn/x86_64/mulmid_basecase.asm:dnl  LGPLv3+,
> license terms reproduced below. These modifications are hereby
> branches/mpir-parallel/mpn/x86_64w/.svn/text-base/mulmid_basecase.asm.svn-base:;
>  LGPLv3+, license terms reproduced below. These modifications are hereby
> branches/mpir-parallel/mpn/x86_64w/mulmid_basecase.asm:;  LGPLv3+,
> license terms reproduced below. These modifications are hereby
> branches/mpir-parallel/mpn/ia64/.svn/text-base/addmul_4.asm.svn-base:C
> LICENSE: GNU LGPLv3+
> branches/mpir-parallel/mpn/ia64/addmul_4.asm:C LICENSE: GNU LGPLv3+
> trunk/mpn/x86_64/.svn/text-base/mulmid_basecase.asm.svn-base:dnl
> LGPLv3+, license terms reproduced below. These modifications are hereby
> trunk/mpn/x86_64/mulmid_basecase.asm:dnl  LGPLv3+, license terms
> reproduced below. These modifications are hereby
> trunk/mpn/x86_64w/.svn/text-base/mulmid_basecase.asm.svn-base:;
> LGPLv3+, license terms reproduced below. These modifications are hereby
> trunk/mpn/x86_64w/mulmid_basecase.asm:;  LGPLv3+, license terms
> reproduced below. These modifications are hereby
> trunk/mpn/ia64/.svn/text-base/addmul_4.asm.svn-base:C LICENSE: GNU LGPLv3+
> trunk/mpn/ia64/addmul_4.asm:C LICENSE: GNU LGPLv3+
>
> mpir-parallel was a branch created by me against trunk at mpir-2.0ish
> stage. This shows all of the lgplv3+ code in mpir, or should do. It
> doesn't seem like there's that much LGPLv3 code in there.
>
> I've searched for "GPLv3+" and "GNU General Public License" too and I
> see no code, except those files, specifically containing the phrase GPLv3+.
>
> Current trunk/COPYING.LIB is Lgplv3+. I also ran this:
>
> find . -name "COPYING.LIB" -print -exec grep -b5 "GPL" {} \;
> ./mpir-0.9/COPYING.LIB
> 75- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
> 132- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> 194- Everyone is permitted to copy and distribute verbatim copies
> 256- of this license document, but changing it is not allowed.
> 315-
> 316:[This is the first released version of the Lesser GPL.  It also counts
> 387- as the successor of the GNU Library Public License, version 2, hence
> 457- the version number 2.1.]
> 483-
> 484-                        Preamble
> 500-
> ./branches/mpir-parallel/COPYING.LIB
> 412-License, supplemented by the additional permissions listed below.
> 478-
> 479-  0. Additional Definitions.
> 508-
> 509-  As used herein, "this License" refers to version 3 of the GNU Lesser
> 580:General Public License, and the "GNU GPL" refers to version 3 of the GNU
> 653-General Public License.
> 677-
> 678-  "The Library" refers to a covered work governed by this License,
> 745-other than an Application or a Combined Work as defined below.
> 808-
> --
> 1539-  The "Corresponding Application Code" for a Combined Work means the
> 1608-object code and/or source code for the Application, including any data
> 1679-and utility programs needed for reproducing the Combined Work from the
> 1750-Application, but excluding the System Libraries of the Combined Work.
> 1820-
> 1821:  1. Exception to Section 3 of the GNU GPL.
> 1865-
> 1866-  You may convey a covered work under sections 3 and 4 of this License
> 1937:without being bound by section 3 of the GNU GPL.
> 1986-
> 1987-  2. Conveying Modified Versions.
> 2021-
> 2022-  If you modify a copy of the Library, and, in your modifications, a
> 2091-facility refers to a function or data to be supplied by an Application
> --
> 2303-   a) under this License, provided that you make a good faith effort to
> 2375-   ensure that, in the event an Application does not supply the
> 2439-   function or data, the facility still operates, and performs
> 2502-   whatever part of its purpose remains meaningful, or
> 2557-
> 2558:   b) under the GNU GPL, with none of the additional permissions of
> 2626-   this License applicable to that copy.
> 2667-
> 2668-  3. Object Code Incorporating Material from Library Header Files.
> 2735-
> 2736-  The object code form of an Application may incorporate material from
> --
> 3143-
> 3144-   a) Give prominent notice with each copy of the object code that the
> 3215-   Library is used in it and that the Library and its use are
> 3277-   covered by this License.
> 3305-
> 3306:   b) Accompany the object code with a copy of the GNU GPL and this
> license
> 3382-   document.
> 3395-
> 3396-  4. Combined Works.
> 3417-
> 3418-  You may convey a Combined Work under terms of your choice that,
> --
> 3699-
> 3700-   a) Give prominent notice with each copy of the Combined Work that
> 3769-   the Library is used in it and that the Library and its use are
> 3835-   covered by this License.
> 3863-
> 3864:   b) Accompany the Combined Work with a copy of the GNU GPL and
> this license
> 3942-   document.
> 3955-
> 3956-   c) For a Combined Work that displays copyright notices during
> 4021-   execution, include the copyright notice for the Library among
> 4086-   these notices, as well as a reference directing the user to the
> 4153:   copies of the GNU GPL and this license document.
> 4205-
> 4206-   d) Do one of the following:
> 4237-
> 4238-       0) Convey the Minimal Corresponding Source under the terms
> of this
> 4312-       License, and the Corresponding Application Code in a form
> 4377-       suitable for, and under terms that permit, the user to
> 4439-       recombine or relink the Application with a modified version of
> 4509-       the Linked Version to produce a modified Combined Work, in the
> 4579:       manner specified by section 6 of the GNU GPL for conveying
> 4645-       Corresponding Source.
> 4674-
> 4675-       1) Use a suitable shared library mechanism for linking with the
> 4746-       Library.  A suitable mechanism is one that (a) uses at run time
> 4817-       a copy of the Library already present on the user's computer
> --
> 4954-       of the Library that is interface-compatible with the Linked
> 5021-       Version.
> 5037-
> 5038-   e) Provide Installation Information, but only if you would otherwise
> 5110-   be required to provide such information under section 6 of the
> 5176:   GNU GPL, and only to the extent that such information is
> 5236-   necessary to install and execute a modified version of the
> 5298-   Combined Work produced by recombining or relinking the
> 5356-   Application with a modified version of the Linked Version. (If
> 5422-   you use option 4d0, the Installation Information must accompany
> 5489-   the Minimal Corresponding Source and Corresponding Application
> 5555-   Code. If you use option 4d1, you must provide the Installation
> 5621:   Information in the manner specified by section 6 of the GNU GPL
> 5688-   for conveying Corresponding Source.)
> 5728-
> 5729-  5. Combined Libraries.
> 5754-
> 5755-  You may place library facilities that are a work based on the
> ./branches/cuda_stuff/COPYING.LIB
> 75- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
> 132- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> 194- Everyone is permitted to copy and distribute verbatim copies
> 256- of this license document, but changing it is not allowed.
> 315-
> 316:[This is the first released version of the Lesser GPL.  It also counts
> 387- as the successor of the GNU Library Public License, version 2, hence
> 457- the version number 2.1.]
> 483-
> 484-                        Preamble
> 500-
> ./branches/mpir-cell/COPYING.LIB
> 75- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
> 132- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> 194- Everyone is permitted to copy and distribute verbatim copies
> 256- of this license document, but changing it is not allowed.
> 315-
> 316:[This is the first released version of the Lesser GPL.  It also counts
> 387- as the successor of the GNU Library Public License, version 2, hence
> 457- the version number 2.1.]
> 483-
> 484-                        Preamble
> 500-
> ./branches/mpir-mt/COPYING.LIB
> 75- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
> 132- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> 194- Everyone is permitted to copy and distribute verbatim copies
> 256- of this license document, but changing it is not allowed.
> 315-
> 316:[This is the first released version of the Lesser GPL.  It also counts
> 387- as the successor of the GNU Library Public License, version 2, hence
> 457- the version number 2.1.]
> 483-
> 484-                        Preamble
> 500-
> ./branches/mpir-cuda/COPYING.LIB
> 75- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
> 132- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> 194- Everyone is permitted to copy and distribute verbatim copies
> 256- of this license document, but changing it is not allowed.
> 315-
> 316:[This is the first released version of the Lesser GPL.  It also counts
> 387- as the successor of the GNU Library Public License, version 2, hence
> 457- the version number 2.1.]
> 483-
> 484-                        Preamble
> 500-
> ./mpir-1.0/COPYING.LIB
> 75- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
> 132- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> 194- Everyone is permitted to copy and distribute verbatim copies
> 256- of this license document, but changing it is not allowed.
> 315-
> 316:[This is the first released version of the Lesser GPL.  It also counts
> 387- as the successor of the GNU Library Public License, version 2, hence
> 457- the version number 2.1.]
> 483-
> 484-                        Preamble
> 500-
> ./mpir-1.1/COPYING.LIB
> 75- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
> 132- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> 194- Everyone is permitted to copy and distribute verbatim copies
> 256- of this license document, but changing it is not allowed.
> 315-
> 316:[This is the first released version of the Lesser GPL.  It also counts
> 387- as the successor of the GNU Library Public License, version 2, hence
> 457- the version number 2.1.]
> 483-
> 484-                        Preamble
> 500-
> ./mpir-1.2/COPYING.LIB
> 75- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
> 132- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> 194- Everyone is permitted to copy and distribute verbatim copies
> 256- of this license document, but changing it is not allowed.
> 315-
> 316:[This is the first released version of the Lesser GPL.  It also counts
> 387- as the successor of the GNU Library Public License, version 2, hence
> 457- the version number 2.1.]
> 483-
> 484-                        Preamble
> 500-
> ./trunk/COPYING.LIB
> 412-License, supplemented by the additional permissions listed below.
> 478-
> 479-  0. Additional Definitions.
> 508-
> 509-  As used herein, "this License" refers to version 3 of the GNU Lesser
> 580:General Public License, and the "GNU GPL" refers to version 3 of the GNU
> 653-General Public License.
> 677-
> 678-  "The Library" refers to a covered work governed by this License,
> 745-other than an Application or a Combined Work as defined below.
> 808-
> --
> 1539-  The "Corresponding Application Code" for a Combined Work means the
> 1608-object code and/or source code for the Application, including any data
> 1679-and utility programs needed for reproducing the Combined Work from the
> 1750-Application, but excluding the System Libraries of the Combined Work.
> 1820-
> 1821:  1. Exception to Section 3 of the GNU GPL.
> 1865-
> 1866-  You may convey a covered work under sections 3 and 4 of this License
> 1937:without being bound by section 3 of the GNU GPL.
> 1986-
> 1987-  2. Conveying Modified Versions.
> 2021-
> 2022-  If you modify a copy of the Library, and, in your modifications, a
> 2091-facility refers to a function or data to be supplied by an Application
> --
> 2303-   a) under this License, provided that you make a good faith effort to
> 2375-   ensure that, in the event an Application does not supply the
> 2439-   function or data, the facility still operates, and performs
> 2502-   whatever part of its purpose remains meaningful, or
> 2557-
> 2558:   b) under the GNU GPL, with none of the additional permissions of
> 2626-   this License applicable to that copy.
> 2667-
> 2668-  3. Object Code Incorporating Material from Library Header Files.
> 2735-
> 2736-  The object code form of an Application may incorporate material from
> --
> 3143-
> 3144-   a) Give prominent notice with each copy of the object code that the
> 3215-   Library is used in it and that the Library and its use are
> 3277-   covered by this License.
> 3305-
> 3306:   b) Accompany the object code with a copy of the GNU GPL and this
> license
> 3382-   document.
> 3395-
> 3396-  4. Combined Works.
> 3417-
> 3418-  You may convey a Combined Work under terms of your choice that,
> --
> 3699-
> 3700-   a) Give prominent notice with each copy of the Combined Work that
> 3769-   the Library is used in it and that the Library and its use are
> 3835-   covered by this License.
> 3863-
> 3864:   b) Accompany the Combined Work with a copy of the GNU GPL and
> this license
> 3942-   document.
> 3955-
> 3956-   c) For a Combined Work that displays copyright notices during
> 4021-   execution, include the copyright notice for the Library among
> 4086-   these notices, as well as a reference directing the user to the
> 4153:   copies of the GNU GPL and this license document.
> 4205-
> 4206-   d) Do one of the following:
> 4237-
> 4238-       0) Convey the Minimal Corresponding Source under the terms
> of this
> 4312-       License, and the Corresponding Application Code in a form
> 4377-       suitable for, and under terms that permit, the user to
> 4439-       recombine or relink the Application with a modified version of
> 4509-       the Linked Version to produce a modified Combined Work, in the
> 4579:       manner specified by section 6 of the GNU GPL for conveying
> 4645-       Corresponding Source.
> 4674-
> 4675-       1) Use a suitable shared library mechanism for linking with the
> 4746-       Library.  A suitable mechanism is one that (a) uses at run time
> 4817-       a copy of the Library already present on the user's computer
> --
> 4954-       of the Library that is interface-compatible with the Linked
> 5021-       Version.
> 5037-
> 5038-   e) Provide Installation Information, but only if you would otherwise
> 5110-   be required to provide such information under section 6 of the
> 5176:   GNU GPL, and only to the extent that such information is
> 5236-   necessary to install and execute a modified version of the
> 5298-   Combined Work produced by recombining or relinking the
> 5356-   Application with a modified version of the Linked Version. (If
> 5422-   you use option 4d0, the Installation Information must accompany
> 5489-   the Minimal Corresponding Source and Corresponding Application
> 5555-   Code. If you use option 4d1, you must provide the Installation
> 5621:   Information in the manner specified by section 6 of the GNU GPL
> 5688-   for conveying Corresponding Source.)
> 5728-
> 5729-  5. Combined Libraries.
> 5754-
> 5755-  You may place library facilities that are a work based on the
> ./mpir-1.3/COPYING.LIB
> 75- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
> 132- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> 194- Everyone is permitted to copy and distribute verbatim copies
> 256- of this license document, but changing it is not allowed.
> 315-
> 316:[This is the first released version of the Lesser GPL.  It also counts
> 387- as the successor of the GNU Library Public License, version 2, hence
> 457- the version number 2.1.]
> 483-
> 484-                        Preamble
> 500-
>
> Which shows you the various distributions and licenses available - in
> summary, mpir-2.0 (trunk) is the only LGPLv3+ library and contains the
> only files showing lgplv3+ code
>
> Just to test against the statement made on
> http://trac.mpir.org/mpir_trac/ticket/71
>
> I extracted mpf/set_str.c from
> ftp://ftp.gmplib.org/pub/gmp-5.0.1/gmp-5.0.1.tar.bz2 and ran a diff:
>
> $ diff -up set_str.c mpir/trunk/mpf/set_str.c
> --- set_str.c   2010-05-04 18:59:21.959815659 +0100
> +++ mpir/trunk/mpf/set_str.c    2010-04-10 18:13:19.584730037 +0100
> @@ -2,14 +2,16 @@
>    in base BASE to a float in dest.  If BASE is zero, the leading
> characters
>    of STRING is used to figure out the base.
>
> -Copyright 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2005, 2007,
> -2008 Free Software Foundation, Inc.
> +Copyright 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2005 Free
> +Software Foundation, Inc.
> +
> +Copyright 2009 B R Gladman
>
>  This file is part of the GNU MP Library.
>
>  The GNU MP Library is free software; you can redistribute it and/or modify
>  it under the terms of the GNU Lesser General Public License as published by
> -the Free Software Foundation; either version 3 of the License, or (at your
> +the Free Software Foundation; either version 2.1 of the License, or (at
> your
>  option) any later version.
>
>  The GNU MP Library is distributed in the hope that it will be useful, but
> @@ -18,7 +20,9 @@ or FITNESS FOR A PARTICULAR PURPOSE.  Se
>  License for more details.
>
>  You should have received a copy of the GNU Lesser General Public License
> -along with the GNU MP Library.  If not, see
> http://www.gnu.org/licenses/.  */
> +along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
> +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
> Boston,
> +MA 02110-1301, USA. */
>
>  /*
>   This still needs work, as suggested by some FIXME comments.
> @@ -27,7 +31,9 @@ along with the GNU MP Library.  If not,
>   3. Use mpn_tdiv_qr instead of mpn_lshift+mpn_divrem.
>  */
>
> +#ifndef _GNU_SOURCE
>  #define _GNU_SOURCE    /* for DECIMAL_POINT in langinfo.h */
> +#endif
>
>  #include "config.h"
>
> @@ -43,10 +49,84 @@ along with the GNU MP Library.  If not,
>  #include <locale.h>    /* for localeconv */
>  #endif
>
> -#include "gmp.h"
> +#include "mpir.h"
>  #include "gmp-impl.h"
>  #include "longlong.h"
>
> +static mp_limb_t mpn_intdivrem (mp_ptr qp, mp_size_t qxn,
> +           mp_ptr np, mp_size_t nn,
> +           mp_srcptr dp, mp_size_t dn)
> +{
> +  ASSERT (qxn >= 0);
> +  ASSERT (nn >= dn);
> +  ASSERT (dn >= 1);
> +  ASSERT (dp[dn-1] & GMP_NUMB_HIGHBIT);
> +  ASSERT (! MPN_OVERLAP_P (np, nn, dp, dn));
> +  ASSERT (! MPN_OVERLAP_P (qp, nn-dn+qxn, np, nn) || qp==np+dn+qxn);
> +  ASSERT (! MPN_OVERLAP_P (qp, nn-dn+qxn, dp, dn));
> +  ASSERT_MPN (np, nn);
> +  ASSERT_MPN (dp, dn);
> +
> +  if (dn == 1)
> +    {
> +      mp_limb_t ret;
> +      mp_ptr q2p;
> +      mp_size_t qn;
> +      TMP_DECL;
> +
> +      TMP_MARK;
> +      q2p = (mp_ptr) TMP_ALLOC ((nn + qxn) * BYTES_PER_MP_LIMB);
> +
> +      np[0] = mpn_divrem_1 (q2p, qxn, np, nn, dp[0]);
> +      qn = nn + qxn - 1;
> +      MPN_COPY (qp, q2p, qn);
> +      ret = q2p[qn];
> +
> +      TMP_FREE;
> +      return ret;
> +    }
> +  else if (dn == 2)
> +    {
> +      return mpn_divrem_2 (qp, qxn, np, nn, dp);
> +    }
> +  else
> +    {
> +      mp_ptr rp, q2p;
> +      mp_limb_t qhl;
> +      mp_size_t qn;
> +      TMP_DECL;
> +
> +      TMP_MARK;
> +      if (UNLIKELY (qxn != 0))
> +       {
> +         mp_ptr n2p;
> +         n2p = (mp_ptr) TMP_ALLOC ((nn + qxn) * BYTES_PER_MP_LIMB);
> +         MPN_ZERO (n2p, qxn);
> +         MPN_COPY (n2p + qxn, np, nn);
> +         q2p = (mp_ptr) TMP_ALLOC ((nn - dn + qxn + 1) * BYTES_PER_MP_LIMB);
> +         rp = (mp_ptr) TMP_ALLOC (dn * BYTES_PER_MP_LIMB);
> +         mpn_tdiv_qr (q2p, rp, 0L, n2p, nn + qxn, dp, dn);
> +         MPN_COPY (np, rp, dn);
> +         qn = nn - dn + qxn;
> +         MPN_COPY (qp, q2p, qn);
> +         qhl = q2p[qn];
> +       }
> +      else
> +       {
> +         q2p = (mp_ptr) TMP_ALLOC ((nn - dn + 1) * BYTES_PER_MP_LIMB);
> +         rp = (mp_ptr) TMP_ALLOC (dn * BYTES_PER_MP_LIMB);
> +         mpn_tdiv_qr (q2p, rp, 0L, np, nn, dp, dn);
> +         MPN_COPY (np, rp, dn);        /* overwrite np area with remainder */
> +         qn = nn - dn;
> +         MPN_COPY (qp, q2p, qn);
> +         qhl = q2p[qn];
> +       }
> +      TMP_FREE;
> +      return qhl;
> +    }
> +}
> +
> +
>  extern const unsigned char __gmp_digit_value_tab[];
>  #define digit_value_tab __gmp_digit_value_tab
>
> @@ -72,7 +152,7 @@ mpn_pow_1_highpart (mp_ptr rp, mp_size_t
>   count_leading_zeros (cnt, exp);
>   for (i = GMP_LIMB_BITS - cnt - 2; i >= 0; i--)
>     {
> -      mpn_sqr (tp, rp + off, rn);
> +      mpn_sqr_n (tp, rp + off, rn);
>       rn = 2 * rn;
>       rn -= tp[rn - 1] == 0;
>       ign <<= 1;
> @@ -137,30 +217,25 @@ mpf_set_str (mpf_ptr x, const char *str,
>       c = (unsigned char) *++str;
>     }
>
> -  /* Default base to decimal.  */
> -  if (base == 0)
> -    base = 10;
> -
> +  digit_value = digit_value_tab;
>   exp_base = base;
> -
> -  if (base < 0)
> +  if (base <= 0)
>     {
>       exp_base = 10;
> -      base = -base;
> +      base = base ? -base : 10;
>     }
>
> -  digit_value = digit_value_tab;
> -  if (base > 36)
> +  if(base < 2 || base > 62)
> +      return -1;
> +  else if(base > 36)
>     {
>       /* For bases > 36, use the collating sequence
>         0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.  */
>       digit_value += 224;
> -      if (base > 62)
> -       return -1;              /* too large base */
>     }
>
>   /* Require at least one digit, possibly after an initial decimal
> point.  */
> -  if (digit_value[c] >= (base == 0 ? 10 : base))
> +  if (digit_value[c] >= base)
>     {
>       /* not a digit, must be a decimal point */
>       for (i = 0; i < pointlen; i++)
> @@ -242,7 +317,7 @@ mpf_set_str (mpf_ptr x, const char *str,
>     size_t n_chars_needed;
>
>     /* This breaks things like 0.000...0001.  To safely ignore superfluous
> -       digits, we need to skip over leading zeros.  */
> +       digits, we need to skip over leadng zeros.  */
>     /* Just consider the relevant leading digits of the mantissa.  */
>     n_chars_needed = 2 + (size_t)
>       (((size_t) prec * GMP_NUMB_BITS) *
> mp_bases[base].chars_per_bit_exactly);
> @@ -250,9 +325,8 @@ mpf_set_str (mpf_ptr x, const char *str,
>       str_size = n_chars_needed;
>  #endif
>
> -    ma = 2 + (mp_size_t)
> -      (str_size / (GMP_NUMB_BITS * mp_bases[base].chars_per_bit_exactly));
> -    mp = TMP_ALLOC_LIMBS (ma);
> +    ma = (mp_size_t) (str_size / mp_bases[base].chars_per_bit_exactly);
> +    mp = TMP_ALLOC_LIMBS (ma / GMP_NUMB_BITS + 2);
>     mn = mpn_set_str (mp, (unsigned char *) begs, str_size, base);
>
>     if (mn == 0)
> @@ -272,35 +346,33 @@ mpf_set_str (mpf_ptr x, const char *str,
>        mn = prec;
>       }
>
> +    exp_in_base = 0;
>     if (expptr != 0)
> -      {
> -       /* Scan and convert the exponent, in base exp_base.  */
> -       long dig, minus, plusminus;
> -       c = (unsigned char) *expptr;
> -       minus = -(long) (c == '-');
> -       plusminus = minus | -(long) (c == '+');
> -       expptr -= plusminus;                    /* conditional increment */
> -       c = (unsigned char) *expptr++;
> -       dig = digit_value[c];
> -       if (dig >= exp_base)
> -         {
> -           TMP_FREE;
> -           return -1;
> -         }
> -       exp_in_base = dig;
> -       c = (unsigned char) *expptr++;
> -       dig = digit_value[c];
> -       while (dig < exp_base)
> -         {
> -           exp_in_base = exp_in_base * exp_base;
> -           exp_in_base += dig;
> -           c = (unsigned char) *expptr++;
> -           dig = digit_value[c];
> -         }
> -       exp_in_base = (exp_in_base ^ minus) - minus; /* conditional negation 
> */
> -      }
> -    else
> -      exp_in_base = 0;
> +    {   char sgn = '+';
> +        int digit = 0, cnt = -1;
> +
> +        if(*expptr == '+' || *expptr == '-')
> +            sgn = *expptr++;
> +
> +        do
> +        {
> +            exp_in_base = exp_in_base * exp_base + digit;
> +            digit = digit_value[*(unsigned char*)expptr++];
> +            cnt++;
> +        }
> +        while
> +            (digit < exp_base);
> +
> +        if(!cnt)
> +        {
> +            TMP_FREE;
> +            return -1;
> +        }
> +
> +        if(sgn == '-')
> +            exp_in_base = -exp_in_base;
> +    }
> +
>     if (dotpos != 0)
>       exp_in_base -= s - dotpos;
>     divflag = exp_in_base < 0;
> @@ -350,7 +422,7 @@ mpf_set_str (mpf_ptr x, const char *str,
>          }
>
>        qp = TMP_ALLOC_LIMBS (prec + 1);
> -       qlimb = mpn_divrem (qp, prec - (mn - rn), mp, mn, rp, rn);
> +       qlimb = mpn_intdivrem (qp, prec - (mn - rn), mp, mn, rp, rn);
>        tp = qp;
>        exp_in_limbs = qlimb + (mn - rn) + (madj - radj);
>        rn = prec;
>
> which shows large sections of significantly different code.
>
> My conclusion, without any other concrete accusations:
>
> mpir 1.3 and earlier contain only lgplv2+ code. mpir-trunk (to be
> mpir-2.0) uses a small number of lgplv3+ patches and is distributed
> under the same license.
>
> Antony
>
> On 05/04/2010 04:43 PM, MPIR Team wrote:
>> Dear All,
>>
>> you may be aware of statements on the GMP website regarding MPIR. We
>> have been passed email correspondence in which Torbjorn Granlund again
>> alleges that we are distributing a:
>>
>> "renamed GMP package with license downgraded from LGPL 3 to LPGL 2.1"
>>
>> But we have no idea what he means. If anyone has any information about
>> this, can you please post it here publicly to our list so we can
>> resolve this situation as soon as possible!
>>
>> The allegations apparently relate to the MPIR website, but as far as
>> we know, all tarballs there are correctly licensed and prominent notices are
>> given as to their licensing status.
>>
>> We sincerely appreciate anyone who can shed light on this issue or assist
>> us.
>>
>> Best Regards,
>>
>> The MPIR Team.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "mpir-devel" group.
>> To post to this group, send email to mpir-de...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> mpir-devel+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/mpir-devel?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "mpir-devel" group.
> To post to this group, send email to mpir-de...@googlegroups.com.
> To unsubscribe from this group, send email to 
> mpir-devel+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/mpir-devel?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-de...@googlegroups.com.
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en.

Reply via email to