Fix the fix, make pi a normal lisp var (Closes bug #176)
authorSteve Youngs <steve@sxemacs.org>
Wed, 23 Dec 2015 08:20:22 +0000 (18:20 +1000)
committerSteve Youngs <steve@sxemacs.org>
Wed, 23 Dec 2015 08:20:22 +0000 (18:20 +1000)
This change reverts the previous one, and then goes about closing bug 176
in a different way.  Namely, by changing Vpi from being a
DEFVAR_CONST_LISP to a DEFVAR_LISP. IOW, a plain ordinary variable.

* src/ent/ent-mpfr.c (vars_of_ent_mpfr): Set Vpi to be a normal
lisp variable instead of a constant so packages like Calc can
let-bind them for their own evil and misguided purposes. :-)
Vbigfr_pi -> Vpi

* src/ent/ent-mpfr.h: Vbigfr_pi -> Vpi

* lisp/float-sup.el: Revert previous change.

Signed-off-by: Steve Youngs <steve@sxemacs.org>
lisp/float-sup.el
src/ent/ent-mpfr.c
src/ent/ent-mpfr.h

index 964c408..05dace0 100644 (file)
     (error "Floating point was disabled at compile time"))
 
 ;; define pi and e via math-lib calls. (much less prone to killer typos.)
-(if (featurep 'bigfr)
-    (progn
-      (defconst pi bigfr-pi "The value of Pi (3.1415926...)")
-      (defconst e euler "The value of e (2.7182818...)"))
+(unless (featurep 'bigfr)
   (defconst pi (* 4 (atan 1)) "The value of Pi (3.1415926...)")
   (defconst e (exp 1) "The value of e (2.7182818...)"))
 
index dbca26a..b032433 100644 (file)
@@ -35,7 +35,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 \f
 Lisp_Object Veuler;
 Lisp_Object Veuler_mascheroni;
-Lisp_Object Vbigfr_pi;
+Lisp_Object Vpi;
 
 bigfr ent_scratch_bigfr;
 static ase_nullary_operation_f Qent_mpfr_zero, Qent_mpfr_one;
@@ -1599,8 +1599,8 @@ void init_ent_mpfr(void)
        Veuler_mascheroni = make_bigfr(0.0, 2048UL);
        mpfr_const_euler(XBIGFR_DATA(Veuler_mascheroni), GMP_RNDN);
 
-       Vbigfr_pi = make_bigfr(0.0, 2048UL);
-       mpfr_const_pi(XBIGFR_DATA(Vbigfr_pi), GMP_RNDN);
+       Vpi = make_bigfr(0.0, 2048UL);
+       mpfr_const_pi(XBIGFR_DATA(Vpi), GMP_RNDN);
 }
 
 void syms_of_ent_mpfr(void)
@@ -1620,7 +1620,7 @@ void vars_of_ent_mpfr(void)
        /* just some dummy values atm, to make the dumper smile */
        Veuler = make_int(1L);
        Veuler_mascheroni = make_int(1L);
-       Vbigfr_pi = make_int(1L);
+       Vpi = make_int(1L);
 
        DEFVAR_CONST_LISP("euler", &Veuler /*
 The value of Euler's constant e (2.7182818...).
@@ -1628,7 +1628,11 @@ The value of Euler's constant e (2.7182818...).
        DEFVAR_CONST_LISP("euler-mascheroni", &Veuler_mascheroni /*
 The value of the Euler-Mascheroni constant (0.5772156...).
                                                                 */);
-       DEFVAR_CONST_LISP("bigfr-pi", &Vbigfr_pi /*
+       /*
+        * See http://issues.sxemacs.org/show_bug.cgi?id=176 for why this
+        * is no longer a constant. -SY.
+        */
+       DEFVAR_LISP("pi", &Vpi /*
 The value of pi (3.1415926...).
                                     */);
 
index 143bd08..30e7b5f 100644 (file)
@@ -41,7 +41,7 @@ extern Lisp_Object Qbigfrp;
 
 extern Lisp_Object Veuler;
 extern Lisp_Object Veuler_mascheroni;
-extern Lisp_Object Vbigfr_pi;
+extern Lisp_Object Vpi;
 
 \f
 typedef struct Lisp_Bigfr Lisp_Bigfr;