How to write Functional Covergroup for byte, word, double-word in SV with 80bit wide data width?

I want to write covergroup in a class to cover partial writes on memory data width WDATA_WIDTH=80 (more than long int)

	covergroup memory_bit_write @ (posedge clk);
		option.per_instance = 1;
		rw_address : coverpoint mem_bit_wdata iff ((cen_w == 0))  {
		  bins low    = {0};
		  bins med[WDATA_WIDTH]    = {[1:(2**WDATA_WIDTH)-1]};
		  bins high   = {(2**WDATA_WIDTH)-1};
		}
	endgroup

Above scheme didn’t work as it can’t take so large number 2**80.

So i want to cover partial writes functionality by checking whether byte,word or double word write was there on my memory.

Please help with code.

Thanks

In reply to aditgupta100:
You are going to have to provide a lot more detail. The code you wrote is perfectly legal, but has no relation to your description. Your coverpoint has 82 bins, with the last bin high overlapping the 81st bin of med. Can you provide some sample values of mem_bit_wdata and how you expect the different bins to be hit?

you can count the number of byte, word, double-word accessed for each write in a function and cover the count value.