login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit

On March 10, 2006 10:53 PM Donald J Bindner wrote:

I'm trying to learn a bit about compiling packages for Axiom, so I chose a small task to cut my teeth on. I want to implement for myself a simpler simpson() function that does numerical integration.

I've got a working package after browsing through numquad.spad. However the prototype for my function is:

 simpson( Float->Float, Segment Float )


So I can perform calculations like:

 simpson( x +-> 1/x, 1..2 )


However I'd like to use a syntax more similar to the way integrate() works. I'd prefer to be able to execute:

 simpson( 1/x, x=1..2 )


I've done a lot of browsing, but I can't figure out how this is done.

I've tried to distill the core of my question into a small example package. It contains two simple() functions. One works fine, but the other won't compile. Suggestions would be welcome.

)abbrev package DONSIMP donSimple
-- Exports simple() function which takes 2 args, -- Working behavior is: simple( x+->x^2, 1..2 ) = 3.0 -- Not working but intended behavior is: -- simple( x^2, x=1..2 ) = 3.0 --
donSimple(): Exports == Implementation where F ==> Float SF ==> Segment F EF ==> Expression F SBF ==> SegmentBinding F
Exports ==> with simple : (F->F,SF) -> F simple : (EF,SBF) -> EF
Implementation ==> add simple(func:F->F, sf:SF ) == a : F := lo(sf) b : F := hi(sf) func(b) - func(a)
simple(func:EF, sbf:SBF) == a : F := lo(segment(sbf)) b : F := hi(segment(sbf)) x : Symbol := variable(sbf) eval(func, kernel(x), b::EF) - eval(func, kernel(x), a::EF)
   Compiling FriCAS source code from file
using old system compiler.
DONSIMP abbreviates package donSimple
------------------------------------------------------------------------
initializing NRLIB DONSIMP for donSimple
compiling into NRLIB DONSIMP
compiling exported simple : (Float -> Float,Segment Float) -> Float
Time: 0 SEC.
compiling exported simple : (Expression Float,SegmentBinding Float) -> Expression Float
Time: 0.04 SEC.
(time taken in buildFunctor:  0)
;;;     ***       |donSimple| REDEFINED
;;;     ***       |donSimple| REDEFINED
Time: 0.01 SEC.
Cumulative Statistics for Constructor donSimple
Time: 0.05 seconds
finalizing NRLIB DONSIMP
Processing donSimple for Browser database:
--->-->donSimple(constructor): Not documented!!!!
--->-->donSimple((simple ((Float) (Mapping (Float) (Float)) (Segment (Float))))): Not documented!!!!
--->-->donSimple((simple ((Expression (Float)) (Expression (Float)) (SegmentBinding (Float))))): Not documented!!!!
--->-->donSimple(): Missing Description
; compiling file "/var/aw/var/LatexWiki/DONSIMP.NRLIB/DONSIMP.lsp" (written 31 JUL 2013 06:46:41 PM):
; /var/aw/var/LatexWiki/DONSIMP.NRLIB/DONSIMP.fasl written
; compilation finished in 0:00:00.019
------------------------------------------------------------------------
donSimple is now explicitly exposed in frame initial
donSimple will be automatically loaded when needed from
/var/aw/var/LatexWiki/DONSIMP.NRLIB/DONSIMP

fricas
simple(1/x,x=2..3) (1)
Type: Expression(Float)

 Subject:   Be Bold !! ( 15 subscribers )