Alasdair McAndrew wrote:
> 
> I am enlarging Kurt and Bill's gsl.* function to include the gsl/gsll
> function integration-qag.  This can be invoked, for example as
> 
> )lisp (gsll:integration-qag (lambda (x) (exp (- (* x x)))) 0.0 1.0 :gauss21)
> 
> where the final :gauss21 is one of a number of parameters which define the
> integration rule to be used.
> 
> In my gsl.lisp file I have
> 
> (defvar intrules (list ':gauss15 ':gauss21 ':gauss31 ':gauss41 ':gauss51
> ':gauss61))
> 
> (defun integration-qag-list (f a b n)
>   (multiple-value-list (integration-qag f a b (eval (nth n intrules)))))
> 
> and in my corresponding gsl.spad:
> 
>     gslIntegrationQag(f,a,b,n) ==
>       r:List DF:=INTEGRATION_-QAG_-LIST(mkLispFunction1(f@
> (DF->DF))$Lisp,a,b,n)$Lisp
>       [r(1),r(2),r(3) pretend Integer]
> 
> This all compiles OK.  But in FriCAS:
> 
> (1) -> gslIntegrationQag(x+->exp(-x^2),0.0,1.0,2)
> 
>    >> Error detected within library code:
>    index out of range
> 
> so clearly I've not set something up correctly - I suspect it's my
> cack-handed defvar list of parameters and my use of (nth n intrules).  But
> I don't know why this isn't working, and what I should be doing instead.

Note that number 2 corresponds to :GAUSS31:

)lisp (defvar intrules (list ':gauss15 ':gauss21 ':gauss31 ':gauss41 ':ga)lisp 
(defvar intrules (list ':gauss15 ':gauss21 ':gauss31 ':gauss41 ':gauss51 
':gauss61))

Value = INTRULES
(1) -> )lisp (nth 2 intrules)

Value = :GAUSS31

AFAICS 'eval' in 'integration-qag-list' is not needed.  But I do
not think this is reason for error.  I would rather supect that
'integration-qag' returns less values than you expect.  Anyway
in such situation I would do

)set break break

run the offending command

and then at Lisp debugger prompt (to avoid potentially too large
debugging printouts):

(setf sb-ext:*debug-print-variable-alist*
     '((*print-array* . nil) (*print-length* . 10)))

Next:

backtrace

shows active calls and (if available) their arguments


-- 
                              Waldek Hebisch

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to fricas-devel+unsubscr...@googlegroups.com.
To post to this group, send email to fricas-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to