i think your problem is representation of floating point number ,you can represent this number using binary notation for decimal point but you should remember point of decimal in both numbers from LSB.after multiplication the point will be at distance sum of previous distances from LSB.
The result of multipication of Q4.12 and Q1.15 numbers is a Q4.27 number.
To get the result you should simply do a 16bit * 16bit multipication and then you should shift the result left by 1-bit.