* new example to demonstrate new QuickEvaluate routine.

git-svn-id: trunk@18197 -
This commit is contained in:
marco 2011-08-13 18:59:46 +00:00
parent 55ff531bd4
commit 8f4d4bc959
5 changed files with 106 additions and 65 deletions

1
.gitattributes vendored
View File

@ -5903,6 +5903,7 @@ packages/symbolic/doc/optimization.txt svneol=native#text/plain
packages/symbolic/doc/symbolic.txt svneol=native#text/plain
packages/symbolic/examples/Makefile svneol=native#text/plain
packages/symbolic/examples/Makefile.fpc svneol=native#text/plain
packages/symbolic/examples/easyevalexample.pp svneol=native#text/plain
packages/symbolic/examples/evaltest.pas svneol=native#text/plain
packages/symbolic/examples/rpnthing.pas svneol=native#text/plain
packages/symbolic/fpmake.pp svneol=native#text/plain

View File

@ -1,5 +1,5 @@
#
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/08/03]
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/08/13]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux
@ -289,193 +289,193 @@ FPCFPMAKE=$(FPC)
endif
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-win32)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-os2)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-haiku)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-qnx)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-netware)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-darwin)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-watcom)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-wince)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-embedded)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-symbian)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-nativent)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),m68k-embedded)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc-wii)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),sparc-embedded)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),x86_64-win64)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),arm-palmos)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),arm-darwin)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),arm-gba)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),arm-nds)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),arm-embedded)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),arm-symbian)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),avr-embedded)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),armeb-linux)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),armeb-embedded)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_PROGRAMS+=evaltest rpnthing
override TARGET_PROGRAMS+=evaltest rpnthing easyevalexample
endif
override INSTALL_FPCPACKAGE=y
ifdef REQUIRE_UNITSDIR

View File

@ -3,7 +3,7 @@
#
[target]
programs=evaltest rpnthing
programs=evaltest rpnthing easyevalexample
[require]
packages=symbolic

View File

@ -0,0 +1,39 @@
Program EasyEvalExample;
{
Copyright (c) 2011 by Marco van de Voort(marco@freepascal.org)
member of the Free Pascal development team
See the file COPYING.FPC, included in this distribution,
for details about the copyright. (LGPL-with-static-linking-exception)
Rock bottom example of new evaluator helper function.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$mode delphi}
Uses Symbolic,Classes,sysutils;
var s : AnsiString;
a : extended;
b : integer;
begin
// quickevaluate('expression',[],[]); evaluates a constant expression to an
// extended result
s:='(5+5+10)*2';
writeln(s,'=',QuickEvaluate(s,[],[]):10:1);
// ... but still allows variables:
a:=2.0;
b:=3;
s:='(5+A+10)*B';
// variable names are case sensitive!
writeln(s,'=',QuickEvaluate(s,['A','B'],[a,b]):10:1,' with A=',a:0:1,' and B=',b);
end.

View File

@ -40,6 +40,7 @@ begin
P.ExamplePath.Add('examples');
P.Targets.AddExampleProgram('evaltest.pas');
P.Targets.AddExampleProgram('rpnthing.pas');
P.Targets.AddExampleProgram('easyevalexample.pas');
P.Sources.AddDoc('doc/optimization.txt');
P.Sources.AddDoc('doc/symbolic.txt');