- Bit operations in Component Pascal

From: Campbell, Robert D (UK Edinburgh) <"Campbell,>
Date: Tue, 29 Mar 2005 10:37:25 +0100

----boundary-LibPST-iamunique-1105271097_-_-
Content-type: text/plain



> > What is the best thing to do in CP?

Three possibilities come to mind:

1 - Simplest, but not fastest.

  - Use LONGINTs.

2 - Use a different random numnber generator.
    Examples of good ones have been published
    by myself & Fyodor.

3 - If you really want your precise function to
    execute at maximum speed use a 1 instruction
    in-line [Code] function - for an example
    see LibIntegers.MultMod.

The compromise that CP has adopted between language
simplicity and utmost efficiency under all
circumstances is not perfect for all circumstances,
but no compromise can be.

I like the COP compromise for two reasons:

1 - I like it!

2 - Better to have 1 c and 1 CP than 2 c's.

Robert

ps I don't have the knowledge to help write the
1-line Code procedure!




>> > Andrew,
>> >
>> > 1. Generally, the Component Pascal MOD operator is the

>> equivalent of the %
>> > (modulus) operator in C. Note that MOD is defined in

>> terms of DIV and CP
>> DIV
>> > always rounds toward negative infinity. Most C-language

>> implementations
>> > normally round towards zero.
>> >
>> > 2. What is the specific problem you have with the return

>> statement?
>> >
>>

>> Hi Chris,
>>

>> the problem is that the divide is by MAX(unsigned integer)
>>

>> Andrew
>>

>> > Regards,
>> >
>> > Chris Burrows
>> > CFB Software
>> > info{([at]})nowhere.xy
>> >
http://www.cfbsoftware.com
>> >
>> >
>> > >
>> > > -----Original Message-----
>> > > From: blackbox{([at]})nowhere.xy

>> Behalf Of Andrew
>> > > Thomas
>> > > Sent: Friday, 25 March 2005 12:52 AM
>> > > To: BlackBox Mailing List
>> > > Subject: [BlackBox] - Bit operations in Component Pascal
>> > >
>> > >
>> > > Moi,
>> > >
>> > > Yes SET is great and it is easy to go from SET to

>> INTEGER. Things are
>> much
>> > > uglier in C. However C has an 4 byte unsigned integer

>> and you can
>> > > manipulate
>> > > this as bits using <<, >>, ^ etc. This is very useful

>> for writing random
>> > > number generators where you can write
>> >
>> > <snip>
>> > > x[kk] = x[kk+M] ^ (x[kk] >> 1) ^ mag01[x[kk] % 2];

>> >
>> > <snip>
>> > > return( (double) y / (unsigned long) 0xffffffff);
>> > >
>> > > The problem I have with the C code is x[kk] % 2 and the return
>> statement.
>> > > What is the best thing to do in CP?
>> > >
>> > > Regards
>> > > Andrew

********************************************************************

This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-1105271097_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFxwYXINClxwYXINCj4gPiBXaGF0IGlzIHRoZSBi
ZXN0IHRoaW5nIHRvIGRvIGluIENQP1xwYXINClxwYXINClRocmVlIHBvc3NpYmlsaXRpZXMgY29t
ZSB0byBtaW5kOlxwYXINClxwYXINCjEgLSBTaW1wbGVzdCwgYnV0IG5vdCBmYXN0ZXN0LlxwYXIN
ClxwYXINCiAgLSAgVXNlIExPTkdJTlRzLlxwYXINClxwYXINCjIgLSBVc2UgYSBkaWZmZXJlbnQg
cmFuZG9tIG51bW5iZXIgZ2VuZXJhdG9yLlxwYXINCiAgICBFeGFtcGxlcyBvZiBnb29kIG9uZXMg
aGF2ZSBiZWVuIHB1Ymxpc2hlZFxwYXINCiAgICBieSBteXNlbGYgJiBGeW9kb3IuXHBhcg0KXHBh
cg0KMyAtIElmIHlvdSByZWFsbHkgd2FudCB5b3VyIHByZWNpc2UgZnVuY3Rpb24gdG9ccGFyDQog
ICAgZXhlY3V0ZSBhdCBtYXhpbXVtIHNwZWVkIHVzZSBhIDEgaW5zdHJ1Y3Rpb25ccGFyDQogICAg
aW4tbGluZSBbQ29kZV0gZnVuY3Rpb24gLSBmb3IgYW4gZXhhbXBsZVxwYXINCiAgICBzZWUgTGli
SW50ZWdlcnMuTXVsdE1vZC5ccGFyDQpccGFyDQpUaGUgY29tcHJvbWlzZSB0aGF0IENQIGhhcyBh
ZG9wdGVkIGJldHdlZW4gbGFuZ3VhZ2VccGFyDQpzaW1wbGljaXR5IGFuZCB1dG1vc3QgZWZmaWNp
ZW5jeSB1bmRlciBhbGxccGFyDQpjaXJjdW1zdGFuY2VzIGlzIG5vdCBwZXJmZWN0IGZvciBhbGwg
Y2lyY3Vtc3RhbmNlcyxccGFyDQpidXQgbm8gY29tcHJvbWlzZSBjYW4gYmUuXHBhcg0KXHBhcg0K
SSBsaWtlIHRoZSBDT1AgY29tcHJvbWlzZSBmb3IgdHdvIHJlYXNvbnM6XHBhcg0KXHBhcg0KMSAt
IEkgbGlrZSBpdCFccGFyDQpccGFyDQoyIC0gIEJldHRlciB0byBoYXZlIDEgYyBhbmQgMSBDUCB0
aGFuIDIgYydzLlxwYXINClxwYXINClJvYmVydFxwYXINClxwYXINCnBzIEkgZG9uJ3QgaGF2ZSB0
aGUga25vd2xlZGdlIHRvIGhlbHAgd3JpdGUgdGhlXHBhcg0KMS1saW5lIENvZGUgcHJvY2VkdXJl
IVxwYXINClxwYXINClxwYXINClxwYXINClxwYXINCj4+ICA+IEFuZHJldyxccGFyDQo+PiAgPlxw
YXINCj4+ICA+IDEuIEdlbmVyYWxseSwgdGhlIENvbXBvbmVudCBQYXNjYWwgTU9EIG9wZXJhdG9y
IGlzIHRoZVxwYXINClxwYXINCj4+ICBlcXVpdmFsZW50IG9mIHRoZSAlXHBhcg0KPj4gID4gKG1v
ZHVsdXMpIG9wZXJhdG9yIGluIEMuIE5vdGUgdGhhdCBNT0QgaXMgZGVmaW5lZCBpblxwYXINClxw
YXINCj4+ICB0ZXJtcyBvZiBESVYgYW5kIENQXHBhcg0KPj4gIERJVlxwYXINCj4+ICA+IGFsd2F5
cyByb3VuZHMgdG93YXJkIG5lZ2F0aXZlIGluZmluaXR5LiBNb3N0IEMtbGFuZ3VhZ2VccGFyDQpc
cGFyDQo+PiAgaW1wbGVtZW50YXRpb25zXHBhcg0KPj4gID4gbm9ybWFsbHkgcm91bmQgdG93YXJk
cyB6ZXJvLlxwYXINCj4+ICA+XHBhcg0KPj4gID4gMi4gV2hhdCBpcyB0aGUgc3BlY2lmaWMgcHJv
YmxlbSB5b3UgaGF2ZSB3aXRoIHRoZSByZXR1cm5ccGFyDQpccGFyDQo+PiAgc3RhdGVtZW50P1xw
YXINCj4+ICA+XHBhcg0KPj4gXHBhcg0KXHBhcg0KPj4gIEhpICBDaHJpcyxccGFyDQo+PiBccGFy
DQpccGFyDQo+PiAgICAgIHRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGRpdmlkZSBpcyBieSBNQVgo
dW5zaWduZWQgaW50ZWdlcilccGFyDQo+PiBccGFyDQpccGFyDQo+PiAgQW5kcmV3XHBhcg0KPj4g
XHBhcg0KXHBhcg0KPj4gID4gUmVnYXJkcyxccGFyDQo+PiAgPlxwYXINCj4+ICA+IENocmlzIEJ1
cnJvd3NccGFyDQo+PiAgPiBDRkIgU29mdHdhcmVccGFyDQo+PiAgPiBpbmZvQGNmYnNvZnR3YXJl
LmNvbVxwYXINCj4+ICA+IGh0dHA6Ly93d3cuY2Zic29mdHdhcmUuY29tXHBhcg0KPj4gID5ccGFy
DQo+PiAgPlxwYXINCj4+ICA+ID5ccGFyDQo+PiAgPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t
LS0tXHBhcg0KPj4gID4gPiBGcm9tOiBibGFja2JveEBvYmVyb24uY2ggW21haWx0bzpibGFja2Jv
eEBvYmVyb24uY2hdT25ccGFyDQpccGFyDQo+PiAgQmVoYWxmIE9mIEFuZHJld1xwYXINCj4+ICA+
ID4gVGhvbWFzXHBhcg0KPj4gID4gPiBTZW50OiBGcmlkYXksIDI1IE1hcmNoIDIwMDUgMTI6NTIg
QU1ccGFyDQo+PiAgPiA+IFRvOiBCbGFja0JveCBNYWlsaW5nIExpc3RccGFyDQo+PiAgPiA+IFN1
YmplY3Q6IFtCbGFja0JveF0gLSBCaXQgb3BlcmF0aW9ucyBpbiBDb21wb25lbnQgUGFzY2FsXHBh
cg0KPj4gID4gPlxwYXINCj4+ICA+ID5ccGFyDQo+PiAgPiA+IE1vaSxccGFyDQo+PiAgPiA+XHBh
cg0KPj4gID4gPiBZZXMgU0VUIGlzIGdyZWF0IGFuZCBpdCBpcyBlYXN5IHRvIGdvIGZyb20gU0VU
IHRvXHBhcg0KXHBhcg0KPj4gIElOVEVHRVIuIFRoaW5ncyBhcmVccGFyDQo+PiAgbXVjaFxwYXIN
Cj4+ICA+ID4gdWdsaWVyIGluIEMuIEhvd2V2ZXIgQyBoYXMgYW4gNCBieXRlIHVuc2lnbmVkIGlu
dGVnZXJccGFyDQpccGFyDQo+PiAgYW5kIHlvdSBjYW5ccGFyDQo+PiAgPiA+IG1hbmlwdWxhdGVc
cGFyDQo+PiAgPiA+IHRoaXMgYXMgYml0cyB1c2luZyA8PCwgPj4sIF4gZXRjLiBUaGlzIGlzIHZl
cnkgdXNlZnVsXHBhcg0KXHBhcg0KPj4gIGZvciB3cml0aW5nIHJhbmRvbVxwYXINCj4+ICA+ID4g
bnVtYmVyIGdlbmVyYXRvcnMgd2hlcmUgeW91IGNhbiB3cml0ZVxwYXINCj4+ICA+XHBhcg0KPj4g
ID4gPHNuaXA+XHBhcg0KPj4gID4gPiB4W2trXSA9IHhba2srTV0gXiAoeFtra10gPj4gMSkgXiBt
YWcwMVt4W2trXSAlIDJdO1xwYXINCj4+ICA+XHBhcg0KPj4gID4gPHNuaXA+XHBhcg0KPj4gID4g
PiByZXR1cm4oIChkb3VibGUpIHkgLyAodW5zaWduZWQgbG9uZykgMHhmZmZmZmZmZik7XHBhcg0K
Pj4gID4gPlxwYXINCj4+ICA+ID4gVGhlIHByb2JsZW0gSSBoYXZlIHdpdGggdGhlIEMgY29kZSBp
cyB4W2trXSAlIDIgYW5kIHRoZSByZXR1cm5ccGFyDQo+PiAgc3RhdGVtZW50LlxwYXINCj4+ICA+
ID4gV2hhdCBpcyB0aGUgYmVzdCB0aGluZyB0byBkbyBpbiBDUD9ccGFyDQo+PiAgPiA+XHBhcg0K
Pj4gID4gPiBSZWdhcmRzXHBhcg0KPj4gID4gPiAgICAgQW5kcmV3XHBhcg0KXHBhcg0KKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKipccGFyDQpUaGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlh
bCB0byB0aGUgaW50ZW5kZWRccGFyDQpyZWNpcGllbnQgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVn
ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZFxwYXINCnJlY2lwaWVudCBwbGVhc2UgZGVs
ZXRlIGl0IGZyb20geW91ciBzeXN0ZW0gYW5kIG5vdGlmeSB0aGUgc2VuZGVyLlxwYXINCllvdSBz
aG91bGQgbm90IGNvcHkgaXQgb3IgdXNlIGl0IGZvciBhbnkgcHVycG9zZSBub3IgZGlzY2xvc2Ug
b3JccGFyDQpkaXN0cmlidXRlIGl0cyBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLlxwYXIN
CioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqXHBhcg0KXHBhcg0KLS0tIEJsYWNrQm94XHBhcg0KLS0tIHNlbmQgc3ViamVj
dCBIRUxQIG9yIFVOU1VCU0NSSUJFIHRvIGJsYWNrYm94QG9iZXJvbi5jaFxwYXINCn19AGplY3Q

----boundary-LibPST-iamunique-1105271097_-_---
Received on Tue Mar 29 2005 - 10:37:25 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:20 UTC