A question about numerical-integration.lisp

Liam Healy lhealy at common-lisp.net
Mon Nov 2 15:40:58 UTC 2015


On Sun, Nov 1, 2015 at 10:59 PM, Alasdair McAndrew <amca01 at gmail.com> wrote:

> 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
>
> (gsll:integration-QAGp 'integration-test-f454 '(0.0d0 1.0d0 (sqrt 2.0d0)
> 3.0d0) 0.0d0 1.0d-3 1000)
>
> or
>
> (gsll:integration-QAGp 'integration-test-f454 (vector 0.0d0 1.0d0 (sqrt
> 2.0d0) 3.0d0) 0.0d0 1.0d-3 1000)
>
> I'm not sure (told you I was a newbie!) what grid provides that a list or
> vector can't.
>

Grids can be thought of as generalized arrays. Since GSL is a foreign (C)
library, its arrays are incompatible with CL arrays. The grid part of Antik
provides a way to bridge that gap, so you can handle them with
similarly-named functions. However, they are different, and foreign calls
need foreign arrays.


>
> 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):
>
> (defvar S2)
> (setf S2 (grid:make-foreign-array 'double-float :dimensions (length S)
> :initial-contents S))
>
> turns the list into a foreign array grid (is there an easier way?).
>
There are multiple ways to convert lists to foreign-arrays. This should
work.



> But then, my attempts to use S2 as input to gaqp produces errors:
>
> (gsll:integration-QAGp 'my-fun 'S2 0.0d0 1.0d-3 1000)
>

While you didn't provide the error, this will not work as you have quoted
S2, so you are sending the symbol 'S2 where you need to send the foreign
array as the argument. This has nothing to do with arrays and
foreign-arrays, it is just a basic syntax error.

>
> Basically I need a way of turning a numeric list into input for
> integration-QAGp. I'll keep fiddling!
>

You have it, you just have a syntax error.


>
> Many thanks again,
> Alasdair
>

No problem,
Liam

>
> On Mon, Nov 2, 2015 at 1:34 PM, Liam Healy <lhealy at common-lisp.net> wrote:
>
>> On Sun, Nov 1, 2015 at 5:10 AM, Alasdair McAndrew <amca01 at gmail.com>
>> wrote:
>>
>>> Hello,
>>>
>>> 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.
>>>
>>> This is made harder by me being a lisp newbie.
>>>
>>> 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.
>>>
>>> I'm using SBCL in emacs-slime, and I have installed gsll with quicklisp,
>>> so that I can call an integration routine with
>>>
>>> * (gsll:integration-qng (lambda (x) (exp (- (* x x)))) 0.0 1.0)
>>>
>>> But the commands
>>>
>>> * (defun integration-test-f454 (x)
>>>   (* (expt x 3) (* (log (abs (* (- (expt x 2) 1.0d0) (- (expt x 2)
>>> 2.0d0)))))))
>>>
>>> * (gsll:integration-QAGp
>>>   'integration-test-f454
>>>   (grid:copy-to (vector 0.0d0 1.0d0 (sqrt 2.0d0) 3.0d0))
>>>   0.0d0 1.0d-3 1000)
>>>
>>> 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...)
>>>
>>> Thanks
>>> Alasdair
>>> --
>>>
>>
>> Try this
>>
>> (setf grid:*default-grid-type* 'grid:foreign-array)
>> (gsll:integration-QAGp 'integration-test-f454 (grid:grid 0.0d0 1.0d0
>> (sqrt 2.0d0) 3.0d0) 0.0d0 1.0d-3 1000)
>>
>> and let us know what happens.
>>
>> Thanks,
>> Liam
>>
>
>
>
> --
> [image: http://www.facebook.com/alasdair.mcandrew]
> <http://www.facebook.com/alasdair.mcandrew> [image:
> https://plus.google.com/+AlasdairMcAndrew/posts]
> <https://plus.google.com/+AlasdairMcAndrew/posts> [image:
> https://www.linkedin.com/pub/alasdair-mcandrew/a/178/108]
> <https://www.linkedin.com/pub/alasdair-mcandrew/a/178/108> [image:
> https://twitter.com/amca01] <https://twitter.com/amca01> [image:
> http://numbersandshapes.net] <http://numbersandshapes.net>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/gsll-devel/attachments/20151102/d45473a3/attachment.html>


More information about the gsll-devel mailing list