Comments or questions? E-mail: info@sirrida.de
This collection of HTML pages is a place where I put some of my thoughts and experiments which I judged too precious to be forgotten. Also, they might find some application.
This is my private hobby.
I do not get any money for it
but I am pleased if you like it
and I will be even more pleased if I get some feedback.
I am not affiliated with any of the companies mentioned on this site.
Did I mention that I hate software patents? IMHO they contradict free science and only make lawyers and patent trolls rich but otherwise hinder progress and ruin companies; the original goal of rewarding inventors and pushing progress is almost never met.
I want the contents of this site to be presented commercial-free and free to use for everyone. Also I kept out all kinds of superfluous or potentially nagging stuff such as animated images, videos, sounds, (possibly time-consuming) scripts, cookies, social buttons, or automatically loading any contents (such as scripts, images, fonts) from other sites ("third parties"). Tools like Adblock Plus and Ghostery should not show anything suspicious. It is exclusively pure HTML with CSS. PHP is used on few pages to generate such HTML to allow for redirection (on the main page) and to get my online source code generator for bit permutations running.
I have created all these pages manually, i.e. with simple text editors
(i.e. my ancient foldED
(DOS/Windows)
and
gedit
(Ubuntu))
and without a design tool.
When you stumble over lines containing @/// or @\\\
you will know that this is folding information (headline and footer)
from foldED.
These lines may appear in almost any text files
(e.g. html, pas, c, h, asm, bat, txt).
By the way, you can download all
sources with fold comments
as well as the ones where the fold comment lines were
converted to ordinary comments using a tool.
For the used programming languages I chose
C / C++,
Pascal (Delphi style),
and
x86 assembler (Intel style).
The Pascal programs generally have a corresponding version in C or C++.
In order to ease keeping them in sync I have usually resisted to
use language features which are difficult to translate
such as classes, macros, or templates.
C / C++ appears to be ubiquitous.
I am not too fit in C / C++ and not really a fan of it for several reasons.
However I must admit that e.g.
GCC
produces quite impressive machine code.
In most cases I have resisted to use C++ (classes and templates)
and much #define stuff (e.g. for emulating Modula-style syntax).
However for some the newest stuff on this site it has become necessary
to use classes (methods for the access records)
and templates (to ease string handling)
or even
C++0x
or later features.
Pascal (Delphi dialect) is the programming language I use for work and hobby since 1983 (this was Turbo Pascal on an Apple II using a Z80 processor on an extra card). There is always a lot one wishes to change, and naturally Pascal is no exception.
Within Delphi there is an internal x86 assembler which is quite convenient to use. So it is natural for me to use x86 assembly language in Intel-style. I also use NASM as an external assembler and enjoy the advantages of macros Delphi is sourly missing. Also the latest CPU instructions (for example BMI2) are available this way since NASM is kept up-to-date.
The
sources
are currently not really meant to be used directly.
Copy and adapt the parts you need.
I hope that some of this work has some
influence on a future C++ standard.
Currently I am working on a templated C++ version of my sources
but I am unsure about the future of the Pascal version or
a version in just another language.
I have kept these pages in (American) English because
I want the texts to be understood by many
("everybody's second choice"),
and I do not want to maintain several translations.
Also, English seems to be the only major language
without special characters such as accents or umlauts.
This makes writing HTML somewhat easier although I could easily use
UTF-8…
English is not my mother tongue.
If you see any errors (even minuscule ones such as misspellings) in my texts
please do not hesitate to report them to me via e-mail:
info@sirrida.de.
I hereby apologize for my bad English.
While reading the book
Hacker's Delight
I was impressed by all the bit hacks
and the
SWAR
operations.
I hunted for further hints in the Internet and found
several pages about counting bits and the like.
Finally I stumbled upon the articles of
Hilewitz/Lee.
I thought it must be possible to develop a bit parallel implementation
of the butterfly network and the generator routines…
In the meantime I have added several chapters
and a lot of functions to the test programs.
The world of bit permutations is much larger than I once thought,
and this site is becoming kind of an encyclopedia thereof.
Since there is now a place for posting my stuff, I wonder what will come next. By now the site keeps growing. Unfortunately the feedback is about zero but at least there seems to be a very small but steady stream of visitors.
Since 2012-10-01 this site is hosted on "real" web space,
so I no longer use a redirection to
a quasi-static ip address of a private server.
You might bookmark each page with the displayed address;
however you can - as you could do before -
bookmark each page as
e.g.
http://programming.sirrida.de?backstage.html.
With the latter method you are on the safe side.
I have used the ISO 8601 date format YYYY-MM-DD in this site since this is the most sensible and unambiguous format; most other alternatives are too easily mixed up. BTW: This is the date format used in Japan.
Sirrida is an ancient Chaldean moon goddess often depicted as a disk with 8 extending rays. The small "to top" icons beneath the headlines resemble this.
I have chosen Sirrida as the name
because I like its sound and its heritage.
BTW: Sirida (with a single "r") is also a variant of
Sigrid.
The main logo is inspired by a symbol of the related god Shamash:
I found this image as well as some info about Sirrida in an article of the Gutenberg project.
Bit twiddling (1)
"1. (pejorative) An exercise in tuning (see tune) in which
incredible amounts of time and effort go to produce little
noticeable improvement, often with the result that the code
becomes incomprehensible."
Bit twiddling (2)
"Programming at a very low level (manipulating the bits and bytes).
Also may refer to spending excessive time on unimportant refinements.
See
hacker."
Bertrand Russell:
"There is much pleasure in useless knowledge"
My friends at YeaSoft describe me as being "the genial mad scientist of computer magics". :-)
Helmut Ritz
for his patience and
for uncountable discussions and development hours.
Bernhard Helmes
for hosting my pages
from the beginning until 2012-10-01.
Harold Aptroot
for pointing out errors and for giving hints.
Hans-Heinrich Hohl
for spending numerous afternoons for years
and guiding our small group through our first experiences with computers on a
Wang 2200 B
(an ancient predecessor of a PC, 1973) in
BASIC
since 1973/1974 at my school
Otto-Hahn-Gymnasium
in
Bensberg
and
Interatom
and
our parents
for sponsoring this computer
which did cost a fortune at that time.