float & 128, 64, 32 bit integers in Atmel Studio

The ATmega328P is 8-bits, but that doesn't hold back the avr-gcc compiler.

The avr-gcc compiler supports:
Integers : 8, 16, 32 or even 64 bits. Signed and unsigned.
Float : only 32 bits in software. The keyword 'double' is translated into 'float'.

The 'float' library for the avr-gcc is highly optimized. It is very fast.

I think it should be possible to add a 64-bit floating point library, but I don't know if that has been done for 8-bits ATmega chips.

There are libraries to do more.
For example BigNumber : Gammon Forum : Electronics : Microprocessors : Arbitrary precision (big number) library port for Arduino

Test if the avr-gcc compiler really support 64 bits integers (spoiler: yes, it does)

// Tested with Arduino IDE 1.6.10 and Arduino Micro (ATmega32U4).

void setup() 
{
  Serial.begin( 9600);
  while(!Serial);       // wait for serial monitor for Leonardo/Micro

  Serial.println("64 bit integers");

  // 64 bits is 16 hex digits
  //                       0123456789012345
  int64_t            a = 0x7777777777777777LL;
  uint64_t           b = 0xAAAAAAAAAAAAAAAAULL;
  long long          c = 0x0123456789ABCDEFLL;
  unsigned long long d = 0x212320242F252E26ULL;

  print64BitsAsHex( a); Serial.println();
  print64BitsAsHex( b); Serial.println();
  print64BitsAsHex( c); Serial.println();
  print64BitsAsHex( d); Serial.println();

  uint64_t e = c * d;
  print64BitsAsHex( e); Serial.println();

  uint64_t f = b + d;
  print64BitsAsHex( f); Serial.println();
}

void loop() 
{
}

void print64BitsAsHex( uint64_t x)
{
  char buffer[16];
  for( int i=0; i<16; i++)
  {
    buffer[15-i] = x & 0x0F;    // get the lowest nibble
    x >>= 4;
  }

  Serial.print("0x");
  for( int i=0; i<16; i++)
  {
    byte b = buffer[i];
    if( b < 0x0A)
      b += '0';
    else
      b += 'A' - 0x0A;
    Serial.write(b);
  }
}