diff options
Diffstat (limited to 'include/graphf.etc')
-rw-r--r-- | include/graphf.etc | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/include/graphf.etc b/include/graphf.etc new file mode 100644 index 0000000..3e3a6cb --- /dev/null +++ b/include/graphf.etc @@ -0,0 +1,295 @@ + +############################################################################### +# # +# Lout @GraphMath package for @Graph (Version 1.1) # +# # +# Version 1.0 by Jeffrey H. Kingston, December 1993. # +# Version 1.1 by Jeffrey H. Kingston, October 1996. # +# # +# This package provides mathematics for the @Graph graph drawing package. # +# # +############################################################################### + +export + + "-0" "-1" "-2" "-3" "-4" "-5" "-6" "-7" "-8" "-9" "-." + pi e sqrt abs ceiling floor truncate round cos sin atan + exp log rand "*" "/" idiv mod "+" "-" + "=" "!=" "<" "<=" ">" ">=" not and xor or + if xloop yloop zloop + +def @GraphMath +{ + def "-0" { "-0" } + def "-1" { "-1" } + def "-2" { "-2" } + def "-3" { "-3" } + def "-4" { "-4" } + def "-5" { "-5" } + def "-6" { "-6" } + def "-7" { "-7" } + def "-8" { "-8" } + def "-9" { "-9" } + def "-." { "-." } + + def pi { "3.14159" } + + def e { "2.71828" } + + def sqrt + precedence 40 + right y + { + y "sqrt" + } + + def abs + precedence 40 + right y + { + y "abs" + } + + def ceiling + precedence 40 + right y + { + y "ceiling" + } + + def floor + precedence 40 + right y + { + y "floor" + } + + def truncate + precedence 40 + right y + { + y "truncate" + } + + def round + precedence 40 + right y + { + y "round" + } + + def cos + precedence 40 + right y + { + y "cos" + } + + def sin + precedence 40 + right y + { + y "sin" + } + + def atan + precedence 39 + left x + right y + { + x y "atan" + } + + def exp + precedence 38 + left x + right y + { + x y "exp" + } + + def log + precedence 37 + left x + right y + { + x y "dolog" + } + + def rand + precedence 36 + left x + right y + { + x y "dorand" + } + + def "*" + precedence 35 + left x + right y + { + x y "mul" + } + + def "/" + precedence 35 + left x + right y + { + x y "div" + } + + def "idiv" + precedence 34 + left x + right y + { + x y "idiv" + } + + def "mod" + precedence 34 + left x + right y + { + x y "mod" + } + + def "-" + precedence 33 + left x + right y + { + x @Case { + "" @Yield { y "neg" } + else @Yield { x y "sub" } + } + } + + def "+" + precedence 32 + left x + right y + { + x @Case { + "" @Yield { y } + else @Yield { x y "add" } + } + } + + def "=" + precedence 30 + left x + right y + { + x y "eq" + } + + def "!=" + precedence 30 + left x + right y + { + x y "ne" + } + + def "<" + precedence 30 + left x + right y + { + x y "lt" + } + + def "<=" + precedence 30 + left x + right y + { + x y "le" + } + + def ">" + precedence 30 + left x + right y + { + x y "gt" + } + + def ">=" + precedence 30 + left x + right y + { + x y "ge" + } + + def "not" + precedence 25 + right y + { + y "not" + } + + def "and" + precedence 24 + left x + right y + { + x y "and" + } + + def "xor" + precedence 23 + left x + right y + { + x y "xor" + } + + def "or" + precedence 22 + left x + right y + { + x y "or" + } + + def if + named cond { true } + named then {} + named else {} + { + cond "{" then "} {" else "} ifelse" + } + + def xloop + named from { 0 } + named to { 0 } + named by { 1 } + named do named x { "xval" } {} + { + from by to "{ /xval exch def" do "} for" + } + + def yloop + named from { 0 } + named to { 0 } + named by { 1 } + named do named y { "yval" } {} + { + from by to "{ /yval exch def" do "} for" + } + + def zloop + named from { 0 } + named to { 0 } + named by { 1 } + named do named z { "zval" } {} + { + from by to "{ /zval exch def" do "} for" + } + +} |