Alasdair and Kurt, Here is one way to deal with multiple return values:
(1) -> )co gsl
Compiling FriCAS source code from file /home/wspage/gsl.spad using
old system compiler.
------------------------------------------------------------------------
gsl is now explicitly exposed in frame frame1
gsl will be automatically loaded when needed from
/home/wspage/GSL.NRLIB/GSL
(1) -> )r gsl-test
DF ==> DoubleFloat
Type: Void
f:=(x:DF):DF+->exp(-x^2)
(2) theMap(*1;anonymousFunction;0;frame1;internal)
Type: (DoubleFloat -> DoubleFloat)
gslIntegrationQng(f,0.0::DF,1.0::DF)
(3) [result= 0.7468241328124271,abserr= 8.291413475940725e-15,neval= 21]
Type: Record(result: DoubleFloat,abserr: DoubleFloat,neval: Integer)
(4) ->
---
In the revised files attached 'integration-qng-list' is a wrapper
routine that just returns the multiple values as a list of values.
Since lists are homogeneous in FriCAS we then have to sort out the
actual types of the result for SPAD in gslIntegrationQng and in this
example return it as a record.
---
Yes, adding other routines should be easy. The hard part of passing
FriCAS functions was done by Kurt (he just made it look easy! :)
I agree that arbitrary precision is indeed another issue and in my
opinion, in general not so interesting.
More tomorrow when I get a chance. I am wondering now about how best
to make GSL a permanent addition to FriCAS. Perhaps Waldek can advise.
Bill.
On 25 October 2015 at 23:10, Alasdair McAndrew <[email protected]> wrote:
> Sweet! Works beautifully (once I set my SBCL_HOME variable); one line will
> do it:
>
> (2) -> gslIntegrationQng(x+->exp(-x^2),0.0,1.0)
>
> And I suppose adding other routines is just a matter of more (include ...)
> lines in gsl.input and corresponding lines in gsl.spad?
>
> With regard to arbitrary precision, that might be another issue. However, I
> was recommended that it may be better to "roll our own" in which case the
> method of choice is probably tanh-sinh integration, which has all of the
> advantages of Gauss Kronrod (nested rules for error analysis) and is far
> easier to implement. See
> http://crd-legacy.lbl.gov/~dhbailey/dhbpapers/dhb-tanh-sinh.pdf for some
> details.
>
> On Mon, Oct 26, 2015 at 1:54 PM, Bill Page <[email protected]>
> wrote:
>>
>> You are FAST! That's amazing. Works exactly as advertised.
>>
>> Re qng:
>>
>> "The function returns the final approximation, result, an estimate of
>> the absolute error, abserr and the number of function evaluations
>> used, neval."
>>
>>
>> https://www.gnu.org/software/gsl/manual/html_node/QNG-non_002dadaptive-Gauss_002dKronrod-integration.html
>>
>> This is great.
>>
>> Bill.
>>
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.
gsl.spad
Description: Binary data
gsl-test.input
Description: Binary data
gsl.lisp
Description: Binary data
