TECHNIKA: PŘEDEM VYPOČTENÉ KONSTANTY

Často užívané konstanty, tak třeba LN(2), číslo Pi, číslo e, stojí zato vypočítat jenom jednou a uschovat jejich hodnotu do programového kódu vnější nebo vnitřní funkce. Ukáži vám jednoduchý program, který automaticky vytvoří vnější funkci. Takovou, která pak bude vracet hodnotu požadované konstanty s maximálním počtem platných číslic pro danou aplikaci.

Příklad:
Při výpočtu Fibonacciho čísel pomocí explicitního vzorce se používá konstanta SQRT(5). Následující program nejprve vypočte hodnotu SQRT(5) s maximálním počtem (řekněme 2100) platných číslic a pak vytvoří externí funkci SQRT5 vracející právě tuto hodnotu.
 


Constant = SQRT(5, 2100)
Output = "C:\REGINA\SQRT5.REX"
call LINEOUT Output, "SQRT5: procedure; V = '' "
do while Constant > 0
  parse var Constant String 60 Constant
  call LINEOUT Output, "V = V ||" String
end
call LINEOUT Output, "return V"
exit
SQRT: procedure
...

 

Výsledkem programu je soubor C:\REGINA\SQRT5.REX, který uvádím dále. Můžeme jej použít jako vnitřní nebo vnější funkci. Ušetří nám okolo půl minuty výpočtů. Upravená část zápisu funkce SQRT5 následuje.
 


SQRT5: procedure; V = ''
V = V || 2.2360679774997896964091736687
V = V || 31276235440618359611525724270
V = V || 89724541052092563780489941441
V = V || 44083787822749695081761507737
V = V || 83504253267724447073863586360
V = V || 12153345270886677817319187916
V = V || 58112766453226398565805357613
V = V || 50417533785003423392414064442
V = V || 08643253909725259262722887629
V = V || 95174024406816117759089094984
V = V || 92371390729728898482088641542
V = V || 68989409913169357701974867888
V = V || 54420897541329561831769214999
V = V || 77424801530434115035957668332
V = V || 51249881517813940800056242085
V = V || 52435422355561063063428202340
V = V || 93331982933959746352271201341
V = V || 74961420263590473788550438968
...
return V

Následující program


P = 25
numeric digits P
say SQRT(5, P)
say SQRT5() + 0
exit
...

zobrazí na displeji


2.236067977499789696409174
2.236067977499789696409174

 

SOUVISLOSTI


Obálka Obsah Index Hlavní stránka Rexx   Mail

změněno 30. července 2001
Copyright © 2000-2001 Vladimír Zábrodský, RNDr.