docs: public float getS15Fixed16() throws IOException
      {
          if (_isMotorolaByteOrder) {
              float res = (getByte() & 0xFF) << 8 |
                          (getByte() & 0xFF);
              int d =     (getByte() & 0xFF) << 8 |
                          (getByte() & 0xFF);
              return (float)(res + d/65536.0);
          } else {
              // this particular branch is untested
              int d =     (getByte() & 0xFF) |
                          (getByte() & 0xFF) << 8;
              float res = (getByte() & 0xFF) |
                          (getByte() & 0xFF) << 8;
              return (float)(res + d/65536.0);
          }
      }