As is done in most of the C/C++ backend, THPUtils_ is a macro that specialize for each type, you can find it’s definition here 8.
Note that this macro is always used inside a “generic” file for which Real is the type that is currently considered.
The function names for THPUtils_(unpackReal) will thus be THFloatUtils_unpackReal for float, THDoubleUtils_unpackReal for double …
You can find the definition of all these functions here 5.
As a rule of thump (I am not sure it’s true for 100% of the code base) you have the following things:

A function called TH(P/C/D/NN/CUNN)XXX_(YYY)(args) (where one or none of P/C/D/NN/CUNN is used as a prefix for the different libraries) will have the C symbol for float for example TH(P)FloatXXX_YYY(args), for double :TH(P)DoubleXXX_YYY(args)…
This function will either be defined inside a generic/ subfolder as TH(P)XXX_(YYY)(args) or in the main folder (not in a generic subfolder) as TH(P)FloatXXX_YYY(args) (which is the case for THPUtils_(unpackReal).