/******************************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
bool comp(uint16_t x, uint16_t y);
uint16_t zMax(uint16_t x, uint16_t y)
{
//uint16_t z=(x<y);
uint16_t z=comp(x,y);
z=z|z<<1|z<<2|z<<3|z<<4|z<<5|z<<6|z<<7|z<<8|z<<9|z<<10|z<<11|z<<12|z<<13|z<<14|z<<15;
return x^((y^x)&z);
}
bool comp(uint16_t x, uint16_t y) // returns y>x
{
bool x_bits[16]={x,x>>1,x>>2,x>>3,x>>4,x>>5,x>>6,x>>7,
x>>8,x>>9,x>>10,x>>11,x>>12,x>>13,x>>14,x>>15};
bool y_bits[16]={y,y>>1,y>>2,y>>3,y>>4,y>>5,y>>6,y>>7,
y>>8,y>>9,y>>10,y>>11,y>>12,y>>13,y>>14,y>>15};
return ( y_bits[15]&&!x_bits[15] ||
y_bits[14]&&!x_bits[14] && !(y_bits[15] ^ x_bits[15]) ||
y_bits[13]&&!x_bits[13] && !(y_bits[15] ^ x_bits[15]) && !(y_bits[14] ^ x_bits[14])||
y_bits[12]&&!x_bits[12] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])||
y_bits[11]&&!x_bits[11] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])||
y_bits[10]&&!x_bits[10] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])||
y_bits[9]&&!x_bits[9] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])||
y_bits[8]&&!x_bits[8] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])&& !(y_bits[9] ^ x_bits[9])||
y_bits[7]&&!x_bits[7] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])&& !(y_bits[9] ^ x_bits[9])&& !(y_bits[8] ^ x_bits[8])||
y_bits[6]&&!x_bits[6] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])&& !(y_bits[9] ^ x_bits[9])&& !(y_bits[8] ^ x_bits[8])&& !(y_bits[7] ^ x_bits[7])||
y_bits[5]&&!x_bits[5] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])&& !(y_bits[9] ^ x_bits[9])&& !(y_bits[8] ^ x_bits[8])&& !(y_bits[7] ^ x_bits[7]) && !(y_bits[6] ^ x_bits[6]) ||
y_bits[4]&&!x_bits[4] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])&& !(y_bits[9] ^ x_bits[9])&& !(y_bits[8] ^ x_bits[8])&& !(y_bits[7] ^ x_bits[7]) && !(y_bits[6] ^ x_bits[6]) && !(y_bits[5] ^ x_bits[5])||
y_bits[3]&&!x_bits[3] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])&& !(y_bits[9] ^ x_bits[9])&& !(y_bits[8] ^ x_bits[8])&& !(y_bits[7] ^ x_bits[7]) && !(y_bits[6] ^ x_bits[6]) && !(y_bits[5] ^ x_bits[5])&& !(y_bits[4] ^ x_bits[4])||
y_bits[2]&&!x_bits[2] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])&& !(y_bits[9] ^ x_bits[9])&& !(y_bits[8] ^ x_bits[8])&& !(y_bits[7] ^ x_bits[7]) && !(y_bits[6] ^ x_bits[6]) && !(y_bits[5] ^ x_bits[5])&& !(y_bits[4] ^ x_bits[4])&& !(y_bits[3] ^ x_bits[3])||
y_bits[1]&&!x_bits[1] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])&& !(y_bits[9] ^ x_bits[9])&& !(y_bits[8] ^ x_bits[8])&& !(y_bits[7] ^ x_bits[7]) && !(y_bits[6] ^ x_bits[6]) && !(y_bits[5] ^ x_bits[5])&& !(y_bits[4] ^ x_bits[4])&& !(y_bits[3] ^ x_bits[3])&& !(y_bits[2] ^ x_bits[2])||
y_bits[0]&&!x_bits[0] && !(y_bits[15] ^ x_bits[15])&& !(y_bits[14] ^ x_bits[14])&& !(y_bits[13] ^ x_bits[13])&& !(y_bits[12] ^ x_bits[12])&& !(y_bits[11] ^ x_bits[11])&& !(y_bits[10] ^ x_bits[10])&& !(y_bits[9] ^ x_bits[9])&& !(y_bits[8] ^ x_bits[8])&& !(y_bits[7] ^ x_bits[7]) && !(y_bits[6] ^ x_bits[6]) && !(y_bits[5] ^ x_bits[5])&& !(y_bits[4] ^ x_bits[4])&& !(y_bits[3] ^ x_bits[3])&& !(y_bits[2] ^ x_bits[2])&& !(y_bits[1] ^ x_bits[1])
);
}
uint16_t Max(uint16_t A,uint16_t B)
{
return (A>B) ? A:B;
}
int main(void)
{
puts("!!!Hello World!!!\r\n"); /* prints !!!Hello World!!! */
uint16_t breakc = 0;
for(int A=0;A<0xFFF;A++)
{
for(int B=0;B<0xFFF;B++)
{
if(zMax(A,B)!=Max(A,B))
{
printf("A=%i,B=%i\tMax=%i\r\n",A,B,zMax(A,B));
if(breakc++>=4)
{
printf("\r\n END.");
return 0;
}
}
}
}
printf("\r\n END.");
return 0;
}