35 lines
1.1 KiB
Plaintext
35 lines
1.1 KiB
Plaintext
REM Create some functions and their inverses:
|
|
DEF FNsin(a) = SIN(a)
|
|
DEF FNasn(a) = ASN(a)
|
|
DEF FNcos(a) = COS(a)
|
|
DEF FNacs(a) = ACS(a)
|
|
DEF FNcube(a) = a^3
|
|
DEF FNroot(a) = a^(1/3)
|
|
|
|
dummy = FNsin(1)
|
|
|
|
REM Create the collections (here structures are used):
|
|
DIM cA{Sin%, Cos%, Cube%}
|
|
DIM cB{Asn%, Acs%, Root%}
|
|
cA.Sin% = ^FNsin() : cA.Cos% = ^FNcos() : cA.Cube% = ^FNcube()
|
|
cB.Asn% = ^FNasn() : cB.Acs% = ^FNacs() : cB.Root% = ^FNroot()
|
|
|
|
REM Create some function compositions:
|
|
AsnSin% = FNcompose(cB.Asn%, cA.Sin%)
|
|
AcsCos% = FNcompose(cB.Acs%, cA.Cos%)
|
|
RootCube% = FNcompose(cB.Root%, cA.Cube%)
|
|
|
|
REM Test applying the compositions:
|
|
x = 1.234567 : PRINT x, FN(AsnSin%)(x)
|
|
x = 2.345678 : PRINT x, FN(AcsCos%)(x)
|
|
x = 3.456789 : PRINT x, FN(RootCube%)(x)
|
|
END
|
|
|
|
DEF FNcompose(f%,g%)
|
|
LOCAL f$, p%
|
|
f$ = "(x)=" + CHR$&A4 + "(&" + STR$~f% + ")(" + \
|
|
\ CHR$&A4 + "(&" + STR$~g% + ")(x))"
|
|
DIM p% LEN(f$) + 4
|
|
$(p%+4) = f$ : !p% = p%+4
|
|
= p%
|