[Scipy-svn] r3009 - in trunk/Lib/special: cephes specfun tests

scipy-svn at scipy.org scipy-svn at scipy.org
Wed May 16 13:05:55 EDT 2007


Author: cookedm
Date: 2007-05-16 12:05:50 -0500 (Wed, 16 May 2007)
New Revision: 3009

Modified:
   trunk/Lib/special/cephes/polmisc.c
   trunk/Lib/special/cephes/polyn.c
   trunk/Lib/special/specfun/specfun.f
   trunk/Lib/special/tests/test_basic.py
Log:
Lib/special: clean up specfun.f a bit

Modified: trunk/Lib/special/cephes/polmisc.c
===================================================================
--- trunk/Lib/special/cephes/polmisc.c	2007-05-15 20:56:36 UTC (rev 3008)
+++ trunk/Lib/special/cephes/polmisc.c	2007-05-16 17:05:50 UTC (rev 3009)
@@ -4,9 +4,7 @@
  */
 
 #include <stdio.h>
-#ifndef __APPLE__
-#include <malloc.h>
-#endif
+#include <stdlib.h>
 #include "mconf.h"
 #ifndef ANSIPROT
 double atan2(), sqrt(), fabs(), sin(), cos();

Modified: trunk/Lib/special/cephes/polyn.c
===================================================================
--- trunk/Lib/special/cephes/polyn.c	2007-05-15 20:56:36 UTC (rev 3008)
+++ trunk/Lib/special/cephes/polyn.c	2007-05-16 17:05:50 UTC (rev 3009)
@@ -60,14 +60,8 @@
  */
 
 #include <stdio.h>
-void exit(int);
-#ifndef NULL
-#define NULL 0
-#endif
+#include <stdlib.h>
 #include "mconf.h"
-#ifndef __APPLE__
-#include <malloc.h>
-#endif
 
 /* near pointer version of malloc() */
 /*

Modified: trunk/Lib/special/specfun/specfun.f
===================================================================
--- trunk/Lib/special/specfun/specfun.f	2007-05-15 20:56:36 UTC (rev 3008)
+++ trunk/Lib/special/specfun/specfun.f	2007-05-16 17:05:50 UTC (rev 3009)
@@ -699,7 +699,7 @@
         DO 10 K=1,NM
           J=2*K-2+M+IP
           SU0=SU0+DF(K)*QM(J)
-          IF (K.GT.NM1.AND.DABS(SU0-SW).LT.DABS(SU0)*EPS) GO TO 15                                                                   
+          IF (K.GT.NM1.AND.DABS(SU0-SW).LT.DABS(SU0)*EPS) GO TO 15
 10        SW=SU0
 15      SD0=0.0D0
         DO 20 K=1,NM
@@ -1144,7 +1144,7 @@
               IF (K.LE.NM) CSJ(K)=CF
               CF0=CF1
 15            CF1=CF
-           IF (CDABS(CSA).GT.CDABS(CSB)) CS=CSA/CF
+           IF (CDABS(CSA).GT.CDABS(CSB)) CS=CSA/CF1
            IF (CDABS(CSA).LE.CDABS(CSB)) CS=CSB/CF0
            DO 20 K=0,NM
 20            CSJ(K)=CS*CSJ(K)
@@ -1609,7 +1609,7 @@
         IMPLICIT DOUBLE PRECISION (A-H,O-Z)
         IF (M.LE.12.OR.Q.LE.3.0*M.OR.Q.GT.M*M) THEN
             CALL CV0(KD,M,Q,A)
-            IF (Q.NE.0.0D0) CALL REFINE(KD,M,Q,A,1)
+            IF (Q.NE.0.0D0) CALL REFINE(KD,M,Q,A)
         ELSE
            NDIV=10
            DELTA=(M-3.0)*M/NDIV
@@ -1626,7 +1626,7 @@
                  A=(A1*Q2-A2*Q1+(A2-A1)*QQ)/(Q2-Q1)
                  IFLAG=1
                  IF (I.EQ.NN) IFLAG=-1
-                 CALL REFINE(KD,M,QQ,A,IFLAG)
+                 CALL REFINE(KD,M,QQ,A)
                  Q1=Q2
                  Q2=QQ
                  A1=A2
@@ -1650,7 +1650,7 @@
                  A=(A1*Q2-A2*Q1+(A2-A1)*QQ)/(Q2-Q1)
                  IFLAG=1
                  IF (I.EQ.NN) IFLAG=-1
-                 CALL REFINE(KD,M,QQ,A,IFLAG)
+                 CALL REFINE(KD,M,QQ,A)
                  Q1=Q2
                  Q2=QQ
                  A1=A2
@@ -2007,7 +2007,7 @@
 
 C       **********************************
 
-        SUBROUTINE REFINE(KD,M,Q,A,IFLAG)
+        SUBROUTINE REFINE(KD,M,Q,A)
 C
 C       =====================================================
 C       Purpose: calculate the accurate characteristic value
@@ -2029,7 +2029,7 @@
         CALL CVF(KD,M,Q,X0,MJ,F0)
         X1=1.002*A
         CALL CVF(KD,M,Q,X1,MJ,F1)
-5       DO 10 IT=1,100
+        DO 10 IT=1,100
            MJ=MJ+1
            X=X1-(X1-X0)/(1.0D0-F0/F1)
            CALL CVF(KD,M,Q,X,MJ,F)
@@ -6307,7 +6307,7 @@
 150           ZHF=ZF0+ZF1
            ENDIF
         ENDIF
-155     A=AA
+        A=AA
         B=BB
         IF (K.GT.150) WRITE(*,160)
 160     FORMAT(1X,'Warning! You should check the accuracy')
@@ -9750,7 +9750,7 @@
         Z=ZERO
         W=0.0D0
         DO 35 NR=1,NT
-10         IF (NR.NE.1) Z=ZO(NR-1)-H
+           IF (NR.NE.1) Z=ZO(NR-1)-H
            IT=0
 15         IT=IT+1
            CALL CY01(KF,Z,ZF,ZD)

Modified: trunk/Lib/special/tests/test_basic.py
===================================================================
--- trunk/Lib/special/tests/test_basic.py	2007-05-15 20:56:36 UTC (rev 3008)
+++ trunk/Lib/special/tests/test_basic.py	2007-05-16 17:05:50 UTC (rev 3009)
@@ -193,7 +193,8 @@
         cephes.hankel2e(1,1)
 
     def check_hyp1f1(self):
-        cephes.hyp1f1(1,1,1)
+        assert_approx_equal(cephes.hyp1f1(1,1,1), exp(1.0))
+        assert_approx_equal(cephes.hyp1f1(3,4,-6), 0.026056422099537251095)
     def check_hyp1f2(self):
         cephes.hyp1f2(1,1,1,1)
     def check_hyp2f0(self):




More information about the Scipy-svn mailing list