move code size benchmark to separate directory
This commit is contained in:
parent
cea1f36e63
commit
24e28e7bb5
6 changed files with 13 additions and 71 deletions
code-size-benchmark
52
code-size-benchmark/posint-dec-to-hex-optimal.c
Normal file
52
code-size-benchmark/posint-dec-to-hex-optimal.c
Normal file
|
@ -0,0 +1,52 @@
|
|||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
|
||||
__attribute__((noinline))
|
||||
int morph_posint_radix( char * in, char * out ) {
|
||||
uint64_t value = 0;
|
||||
while( *in ) {
|
||||
if( *in >= '0' && *in <= '9' ) {
|
||||
value *= 10;
|
||||
value += *in - '0';
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
|
||||
in++;
|
||||
}
|
||||
|
||||
uint64_t v = value;
|
||||
while( v ) {
|
||||
out ++;
|
||||
v /= 16;
|
||||
}
|
||||
|
||||
*out-- = '\0';
|
||||
while( value ) {
|
||||
unsigned digit = value % 16;
|
||||
if( digit < 10 ) {
|
||||
*out-- = digit + '0';
|
||||
} else if( digit < 16 ) {
|
||||
*out-- = digit + 'a' - 10;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
value /= 16;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main() {
|
||||
char bufA[1024];
|
||||
char bufB[1024];
|
||||
|
||||
char * in = bufA;
|
||||
char * out = bufB;
|
||||
|
||||
scanf("%s", in);
|
||||
morph_posint_radix( in, out );
|
||||
printf("%s\n", out);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue