As I am reading the Monero source code to understand it, I am not getting one thing, the confusion is caused due to crypto-ops.c,ge.h,rctOps.cpp
.
Monero uses keccak hash that is 32 bytes in size, it uses (mod)q where size of q is 32 bytes, and it is the size of the group, so every point in the elliptic curve (x,y) is of (32,32) bytes.
Now my confusion is with ge.h
where it has a struct that uses 40 bytes for storage.
In one word, what do the structs in ge.h do?