most variables go in the range of 0-1,
:x:, :y:, :r:, and :t: go from 0 to 1 (:r: actualy goes to sqrt(2) in the corners)
:X: and :Y: (note capitalisation) go from -1 to 1
:ang: goes from 0 to 2*PI
note if you find this isn't how things are working it's a bug. I'm looking into something right now that makes me think :ang: might be between -PI and PI, I might keep it this way though, what do you think?
I figured these woulf be the most maliable ranges for these, cause if you wanted a function that changed, say, from -2 to 11, along lets say x, you'd just have to set a variable like this
@NEWX=:x:*13-2
and instead of :x: you'd use :NEWX:
make sure you use the most recent build (in the other thread, cause in addition to more functionality, I also fixed a bug with :ang:)
er... you know what, I'll atach the most recent version (posably more reacent than the other thread) you will still need the DLL pack from the other thread.
if this was used in game it would use just as much memory, because every frame would still need to be rendered, though it would save on download sizes. now on the other hand this could be a useful tool in comeing up with stuff for pixel shaders that use no texture at all, as this is effectively one big slow system memory pixel shader.
all output chanels are in the range of 0 to 1 were 0 is totaly off and 1 is totaly on (exept hue wich wraps around, 0 and 1 are red, .5 is green .75 is blue/purple, .25 is yellow/green, hsl is sort of like polar coordanants with H being equivelent to theta).
so you need to normalise your output to this, on drawing anything greater than 1 is clamped to 1, and less than 0 to 0, now this is after evaluation, so you can have negitive values, it's just that when it's drawn on screen it shows up as black. you can invoke this function in your code if you think it will be usefull (anything with a divide over (aproching) zero in it for instance, like tangent functions) with clamp().
by complex variables do you mean i? no, but I'll look into it, I don't think i would be to hard to incorporate into the code (I'd just have to add a second double and use the appropriate math in the appropriate places), I could even include output modes for it. if you promise to use it that is

I was also considering adding iterative abilities (wich could allow you to fake diferentiation/integration and do series convergence) but that's going to have to wait untill after I figure out how to get user defined functions to work (and I don't mean those psudo functional variables
also a few hidden functions that use non-standard notation (because its a requierment of the odd syntax I started with)
b#x == the b'th root of x
b~x == the log base b of x
comparison opperators (>,<,=) return 1.0 for true and 0.0 for false
and modulus is %
also there are built in constants PI and E (case sensitive, I know e is suposed to be lower case but it's my screwy syntax) if there are any others you'd like I'd be happy to include them. there is also a built in variable called :srand: wich is a static random, it gets changed everytime you evaluate to something between 0 and 1 (it would be diferent in each frame of an animation)
while I'm at it here is a complete list of all unary functions currently supported:
hypsin
hypcos
hyptan
arcsin
arccos
arctan
sin
cos
tan
log
ln
sqrt
deg (degree to radian)
rad (radian to degree)
! (factorial, it works a bit oddly !(:var:) rather than :var:! as you would expect)
abs
ipart (returns only the whole number)
fpart (strips off whole numbers, leaveing only the less than 1 part)
sign (returns -1 or 1)
not (returns 0 if you pass it 1, zero under all other cases)
clamp (returns 1 if passed over 1, 0 if under 0)
if this starts getting used I'm likely to rework the syntax
oh and if you plan on doing animations here is a tip, evaluate at t=0 and t=1 it the two images look exactly the same it will loop seamlessly.
[attachment deleted by admin]