r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[rebcode] Rebcode discussion

BrianH
19-Nov-2005
[1264x4]
Well after testing, it seems that the behavior of cmp is:

1) Case sensitive. Lowercase the strings for case insensitive compares.

2) If the first string is less than the second, cmp sets the return 
word to -1, equal sets to 0, and greater sets to 1. If two strings 
of different lengths and are the same for the length of the shorter 
string, the longer string counts as greater. Otherwise, the numeric 
equivalent of each corresponding character is compared.

3) You can roll your own with length?, repeatz, pick, lt.i, gt.i 
and breakt (if you want, I'll do it). The cmp opcode won't help here.
4) Use apply i find [ser val] - it'll be faster.
Still, I'm glad to see cmp, sign and asr, and the fixes are welcome 
too. I didn't know that lsr was not unsigned before - that's what 
lsr means. Good fix!
; Index of non-equal, 1-based, assumes indexes within bounds
length? x a
length? y b
gt.i x y
ift [set.i x y]
repeat i x [
    pick x a i
    pick y b i
    eq.i x y
    breakf
]
; i = first non-equal index
It would probably be better to do case-sensitive compares anyway, 
as it would allow you to compare binaries. Character case needs code 
pages and such to work anyway when you have Unicode, or languages 
other than English.
Anton
19-Nov-2005
[1268]
View1.3.61 is out. http://www.rebol.net/builds/
BrianH
19-Nov-2005
[1269]
Anton, thanks for announcing, as I forgot to mention above that was 
the version I was testing with :)
Oldes
23-Nov-2005
[1270x3]
Just uploaded rebcode for tracing 2 colored bitmaps (it's not perfect, 
I think it can be optimised) but at this moment I have what I needed....
do http://box.lebeda.ws/~hmm/rebol/projects/vectorize/latest/vectorize.r

probe vectorize http://box.lebeda.ws/~hmm/rebol/projects/vectorize/latest/img41.gif
It's possible that some situation will not be handled, but I was 
already able to convert two alphabets from bitmap to vectors using 
it.
Rebolek
23-Nov-2005
[1273]
what is the result of vectorize function? draw dialect surely not
Oldes
23-Nov-2005
[1274x2]
probe ctx-vectorize/to-pairs vectorize http://box.lebeda.ws/~hmm/rebol/projects/vectorize/latest/img41.gif
I'm not using pair as there is no support for them in rebcode
Rebolek
23-Nov-2005
[1276]
to-pairs function returns some a lot of negative pair! , why is the 
image shifted?
Oldes
23-Nov-2005
[1277x4]
because i use it to make font from the bitmap and there is the y 
axis counted from below, you may also aske why there is the innerLine 
(it's because to render the hole correctly there must be correct 
direction - it could be done in the rebcode, but I found it when 
I had the inner tracing done and don't want to do it again - so I 
just changed the "line" to "innerLine" and must fix it in the to-pairs 
function -> for outer shape I use append and for holes insert :)
I should probably remove to to-pairs function from the vectorizer's 
context, and use it alone
here is example how to use it in real life: do http://box.lebeda.ws/~hmm/rebol/projects/font-tools/latest/test.r
It would be nice to have possibility to use embedded fonts in Rebol 
as it's possible with Flash.
Volker
25-Nov-2005
[1281]
http://www.complang.tuwien.ac.at/papers/ertl%26gregg04pact.ps.gz
Oldes
25-Nov-2005
[1282]
I probably missed something, how can I read *.ps files?
Volker
25-Nov-2005
[1283x2]
Click on them in linxu? Hmm, there is ghostscript for windows too 
somewhere.
Mybe google has html in its cache, but i lost the search-page.
Oldes
25-Nov-2005
[1285]
What is the advantage of using *.ps files? Is it at least interesting 
reading?
Volker
25-Nov-2005
[1286x2]
It was the interesting reading why i choosed it. did not realize 
the *.ps
about building a native compiler from an interpeter.
Oldes
25-Nov-2005
[1288]
ech 10MB of download just to read a simple text file, I'm not going 
to read it today.
Volker
25-Nov-2005
[1289]
abstract: http://csdl2.computer.org/persagen/DLAbsToc.jsp?resourcePath=/dl/proceedings/&toc=comp/proceedings/pact/2004/2229/00/2229toc.xml&DOI=10.1109/PACT.2004.10021
Rebolek
25-Nov-2005
[1290]
you can convert ps to pdf on http://www.ps2pdf.comfor free
DideC
25-Nov-2005
[1291]
...and it works well!
Oldes
28-Nov-2005
[1292]
here is example of simple cells animation with custom rebcode's preprocessor 
--> do http://box.lebeda.ws/~hmm/rebol/projects/boids/latest/rc-cells-1.r
Geomol
28-Nov-2005
[1293]
hehe funny! :-)
Oldes
28-Nov-2005
[1294x3]
hm, but now I want to work with decimals as well and wonder if will 
be faster to use block to store the cell variables, or if I will 
use my own decimal format and binary structer as I'm using now
how to write: [ 2 ** exponent ] in rebcode?
stupid question:) mul.d i i
Rebolek
28-Nov-2005
[1297]
mul.d i i is i ** 2 and not 2 ** i
Geomol
28-Nov-2005
[1298]
2 ** exponent:

set a 2.0
log-e a
mul.d a exponent
exp a
Rebolek
28-Nov-2005
[1299]
or you can use set a 0.693147180559945 to save one instruction
Oldes
28-Nov-2005
[1300x4]
thanks, but kru, I will save instruction but will deal with rounding 
error:
>> x: rebcode [exponent][set a 2.0 log-e a mul.d a exponent exp a 
return a] x 3.0
== 8.0

>> x: rebcode [exponent][mul.d exponent 0.693147180559945 exp exponent 
return exponent] x 3.0
== 7.99999999999999
interesting, it looks it will be faster to use rebol blocks to store 
Rebol values instead of binary format I used in the cell example 
before (which was faster in the early rebcode versions)
do http://box.lebeda.ws/~hmm/rebol/projects/boids/latest/rc-cells-2.r
  <--- same like the version 1 but without the rebcode preprocessor 
using Rebol block to store cell variables instead of the binary format.
Henrik
28-Nov-2005
[1304]
how do you tell the speed difference? I can't see it....
Oldes
28-Nov-2005
[1305]
It's not in the script, I did local tests.
Henrik
28-Nov-2005
[1306]
how great is the speed difference?
Oldes
28-Nov-2005
[1307]
using rebol block is 3x faster
Henrik
28-Nov-2005
[1308]
that's quite a lot...
Oldes
28-Nov-2005
[1309]
how to get random number between 0 and 1?
Rebolek
28-Nov-2005
[1310]
I generate random number from 0 to milion and divede it by milion
Oldes
28-Nov-2005
[1311x3]
:) i fought there will be better method
so it's: rnd: rebcode[][set d 1000000000 randz d to-dec d div.d d 
1000000000.0 return d]
how to write atan2(sin,cos) in rebcode?