Index: head/cad/spice/files/patch-src_lib_inp_inpptree_c =================================================================== --- head/cad/spice/files/patch-src_lib_inp_inpptree_c (nonexistent) +++ head/cad/spice/files/patch-src_lib_inp_inpptree_c (revision 162349) @@ -0,0 +1,34 @@ +--- src/lib/inp/inpptree.c.orig Mon May 3 02:16:54 1993 ++++ src/lib/inp/inpptree.c Sun May 14 09:34:56 2006 +@@ -1,6 +1,8 @@ + /********** + Copyright 1990 Regents of the University of California. All rights reserved. + Author: 1987 Wayne A. Christopher, U. C. Berkeley CAD Group ++Modified: 2006 John D. Polstra - Fix differentiation of a^b where b is not ++ constant. + **********/ + + #include "spice.h" +@@ -206,18 +208,10 @@ + mkcon(p->right->constant - 1))), + arg1); + } else { +- /* This is complicated. f(x) ^ g(x) -> +- * exp(y(x) * ln(f(x)) ... +- */ +- arg1 = PTdifferentiate(p->left, varnum); +- arg2 = PTdifferentiate(p->right, varnum); +- newp = mkb(PT_TIMES, mkf(PTF_EXP, mkb(PT_TIMES, +- p->right, mkf(PTF_LN, p->left))), +- mkb(PT_PLUS, mkb(PT_TIMES, p->right, +- mkb(PT_DIVIDE, arg1, p->left)), +- mkb(PT_TIMES, arg2, +- mkf(PTF_LN, arg1)))); +- ++ /* Rewrite a^b as exp(ln(a) * b) */ ++ newp = mkf(PTF_EXP, mkb(PT_TIMES, mkf(PTF_LN, p->left), p->right)); ++ /* Differentiate the rewritten form. */ ++ newp = PTdifferentiate(newp, varnum); + } + break; + Property changes on: head/cad/spice/files/patch-src_lib_inp_inpptree_c ___________________________________________________________________ Added: cvs2svn:cvs-rev ## -0,0 +1 ## +1.1 \ No newline at end of property Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property