\ 5 point Gauss-Laguerre integration

MARKER -gauss

needs ftran111.f

12.640800844276e0    FVARIABLE x4  x4  F!
 7.085810005859e0    FVARIABLE x3  x3  F!
 3.596425771041e0    FVARIABLE x2  x2  F!
 1.413403059107e0    FVARIABLE x1  x1  F!
 0.263560319718e0    FVARIABLE x0  x0  F!

 5.21755610583e-1    FVARIABLE w0  w0  F!
 3.98666811083e-1    FVARIABLE w1  w1  F!
 7.59424496817e-2    FVARIABLE w2  w2  F!
 3.61175867992e-3    FVARIABLE w3  w3  F!
 2.33699723858e-5    FVARIABLE w4  w4  F!

v: fdummy

: )int      ( f: a b -- integral)  ( xt --)
    defines  fdummy
    f" w0 * fdummy(x0) + w1 * fdummy(x1) + w2* fdummy(x2)
        + w3 * fdummy(x3) + w4 * fdummy(x4) "
;

FALSE [IF]

Examples:

10 set-precision

use( fcos )int f. .5005384852  ok       \ exact = 0.5

: f1   f2*  fcos  ;                     \ cos(2x)
use( f1 )int f. .1183827839  ok         \ exact = 0.2

use( fsin )int f. .4989033210  ok       \ exact = 0.5

: f2   f2*  fsin  ;  ok                 \ sin(2x)
use( f2 )int f. .4494545483  ok         \ exact = 0.4

: f3   fdup  f^4  f*   fdup  2e0 f-  f*  1e0 f+  ;   \ x^10 - 2x^5 + 1
use( f3 )int f. 3614161.000  ok         \ exact = 3628561

: f4   f^4  fdup  2e0 f-  f*  1e0  f+  ;  ok  \ x^8 - 2x^4 + 1
1e0 f4 f. .0000000000  ok
2e0 f4 f. 225.0000000  ok

use( f4 )int f. 40273.00000  ok         \ exact =  40273
[THEN]