JavaScript (Node.js), 105 101 bytes
Shorter Node version suggested by @Neil
Saved 4 more bytes thanks to @ShieruAsakoto
Takes input as (x)(y)
.
x=>y=>(v=Buffer(4),v.writeInt32LE((g=n=>v.writeFloatLE(n)&&v.readInt32LE())(x)^g(y)),v.readFloatLE())
#JavaScript (ES6), 115 bytes
JavaScript (ES6), 115 bytes
Takes input as an array of 2 floats.
a=>(v=new DataView(new ArrayBuffer(4))).getFloat32(v.setUint32([x,y]=a.map(n=>v.getUint32(v.setFloat32(0,n))),x^y))