<p dir="ltr"><br>
On Nov 2, 2015 4:59 AM, "Alasdair McAndrew" <<a href="mailto:amca01@gmail.com">amca01@gmail.com</a>> wrote:<br>
><br>
> Brilliant! - thank you so much - that works just as it should.  Why cannot the input to integration-qagp be simply a list or a vector? As in<br>
><br>
> (gsll:integration-QAGp 'integration-test-f454 '(0.0d0 1.0d0 (sqrt 2.0d0) 3.0d0) 0.0d0 1.0d-3 1000)<br>
><br>
> or<br>
><br>
> (gsll:integration-QAGp 'integration-test-f454 (vector 0.0d0 1.0d0 (sqrt 2.0d0) 3.0d0) 0.0d0 1.0d-3 1000)<br>
><br>
> I'm not sure (told you I was a newbie!) what grid provides that a list or vector can't.</p>
<p dir="ltr">They provide speed especially in combination with the C library GSL. And since you don't want to check the type in every math function, the convention is that you convert your data to a grid, then call the math functions.</p>
<p dir="ltr">This is much like Python and numpy. C doesn't have this problem, but then its data types are much less user-friendly overall.<br><br></p>
<p dir="ltr">> And here's a tiny problem from my tiny brain: suppose the endpoints and singularities are given as a standard Lisp list, S say.  Then (I'm using SBCL):<br>
><br>
> (defvar S2)<br>
> (setf S2 (grid:make-foreign-array 'double-float :dimensions (length S) :initial-contents S))<br>
><br>
> turns the list into a foreign array grid (is there an easier way?).  But then, my attempts to use S2 as input to gaqp produces errors:<br>
><br>
> (gsll:integration-QAGp 'my-fun 'S2 0.0d0 1.0d-3 1000)</p>
<p dir="ltr">(Maybe the second quote?)<br></p>
<p dir="ltr">Hope this helps,<br>
david.<br><br></p>
<p dir="ltr">> Basically I need a way of turning a numeric list into input for integration-QAGp. I'll keep fiddling!<br>
><br>
> Many thanks again,<br>
> Alasdair<br>
><br>
> On Mon, Nov 2, 2015 at 1:34 PM, Liam Healy <<a href="mailto:lhealy@common-lisp.net">lhealy@common-lisp.net</a>> wrote:<br>
>><br>
>> On Sun, Nov 1, 2015 at 5:10 AM, Alasdair McAndrew <<a href="mailto:amca01@gmail.com">amca01@gmail.com</a>> wrote:<br>
>>><br>
>>> Hello,<br>
>>><br>
>>> I am using the excellent gsll package (in the first instance), to provide an interface to quadpack for the mathematics system FriCAS.  I'm slowly going through calculus/numerical-integration.lisp one function at a time and writing each one into FriCAS as I go.  This means writing functions in FriCAS's own language SPAD which interface with gsll.<br>
>>><br>
>>> This is made harder by me being a lisp newbie.<br>
>>><br>
>>> However, I've come to integration-QAGP, and I've tried to run the test command (having first defined the function it calls).  However, all I get is errors.<br>
>>><br>
>>> I'm using SBCL in emacs-slime, and I have installed gsll with quicklisp, so that I can call an integration routine with<br>
>>><br>
>>> * (gsll:integration-qng (lambda (x) (exp (- (* x x)))) 0.0 1.0)<br>
>>><br>
>>> But the commands<br>
>>><br>
>>> * (defun integration-test-f454 (x)<br>
>>>   (* (expt x 3) (* (log (abs (* (- (expt x 2) 1.0d0) (- (expt x 2) 2.0d0)))))))<br>
>>><br>
>>> * (gsll:integration-QAGp<br>
>>>   'integration-test-f454<br>
>>>   (grid:copy-to (vector 0.0d0 1.0d0 (sqrt 2.0d0) 3.0d0))<br>
>>>   0.0d0 1.0d-3 1000)<br>
>>><br>
>>> just produces a long list of errors. Is "grid" a standard library, or does it need to be loaded first?  (Told you I was a newbie...)<br>
>>><br>
>>> Thanks<br>
>>> Alasdair<br>
>>> --<br>
>><br>
>><br>
>> Try this<br>
>><br>
>> (setf grid:*default-grid-type* 'grid:foreign-array)<br>
>> (gsll:integration-QAGp 'integration-test-f454 (grid:grid 0.0d0 1.0d0 (sqrt 2.0d0) 3.0d0) 0.0d0 1.0d-3 1000)<br>
>><br>
>> and let us know what happens.<br>
>><br>
>> Thanks,<br>
>> Liam<br>
><br>
><br>
><br>
><br>
> -- <br>
><br>
</p>