>しかし現代的な定義での関数は写像の一種とみなされ、
>一つの入力があるときに出力を一つだけ得るものと定義されることが多く、
>この場合には多価関数を「関数」と呼ぶのは不適切となる
>つまり入力値が元の関数の写像によって移されて出力となるときに、
>入力に関する情報の一部が欠落してしまうために、出力から入力を再現できないのである。
>この場合、多価関数は元の関数の部分関数の逆関数 (partial inverse, en) であると言える。

というわけで、数学的にもイリーガルな扱いだから、
プログラミングでスマートに扱える必要ないよ。
sqrtも正しか返さないし。