- or download this
C:\test\C>bufswap 536870912 268435456 2 ### 2^29 2^28
size:536870912 offset;268435456
...
[ 0 1 ... 268435454 268435455 ^ 268435456 268
+435457 ... 536870910 536870911 ]
[ 268435456 268435457 ... 536870910 536870911 ^ 0
+ 1 ... 268435454 268435455 ]
recursive: swaps:268435456 took 2.476348362 secs.
- or download this
C:\test\C>bufswap 30000000 20000000 2
size:30000000 offset;20000000
...
[ 0 1 ... 19999998 19999999 ^ 20000000 20
+000001 ... 29999998 29999999 ]
[ 20000000 20000001 ... 29999998 29999999 ^ 0
+ 1 ... 19999998 19999999 ]
recursive: swaps:20000000 took 0.163142653 secs.
- or download this
C:\test\C>bufswap 536870855 268435399 2 ### 2^28+prime prime
size:536870855 offset;268435399
...
[ 0 1 ... 268435397 268435398 ^ 268435399 268
+435400 ... 536870853 536870854 ]
[ 268435399 268435400 ... 536870853 536870854 ^ 0
+ 1 ... 268435397 268435398 ]
recursive: swaps:536870854 took 3.633964430 secs.
- or download this
C:\test\C>bufswap 2097147 1048571 2 ### 2^20+prime prime
size:2097147 offset;1048571
...
[ 0 1 ... 134217687 134217688 ^ 134217689 134
+217690 ... 268435415 268435416 ]
[ 134217689 134217690 ... 268435415 268435416 ^ 0
+ 1 ... 134217687 134217688 ]
reversive: swaps:268435416 took 2.337291168 secs.
- or download this
abcdef123
321fedcba reverse the entire buffer.
123fedcba reverse the smaller partition.
123abcdef reverse the larger partition.
- or download this
U32 reverseBuffer( register U64 *p, const U32 start, const U32 size )
+{
register U32 i, swaps = 0;
...
swaps += reverseBuffer( p + (size - offset), 0, offset );
return swaps;
}