code: public Matrix4f rotateY(float ang, Matrix4f dest) {
          if ((properties & PROPERTY_IDENTITY) != 0)
              return dest.rotationY(ang);
          float cos, sin;
          sin = (float) Math.sin(ang);
          cos = (float) Math.cosFromSin(sin, ang);
          float rm00 = cos;
          float rm02 = -sin;
          float rm20 = sin;
          float rm22 = cos;
  
          // add temporaries for dependent values
          float nm00 = m00 * rm00 + m20 * rm02;
          float nm01 = m01 * rm00 + m21 * rm02;
          float nm02 = m02 * rm00 + m22 * rm02;
          float nm03 = m03 * rm00 + m23 * rm02;
          // set non-dependent values directly
          dest._m20(m00 * rm20 + m20 * rm22);
          dest._m21(m01 * rm20 + m21 * rm22);
          dest._m22(m02 * rm20 + m22 * rm22);
          dest._m23(m03 * rm20 + m23 * rm22);
          // set other values
          dest._m00(nm00);
          dest._m01(nm01);
          dest._m02(nm02);
          dest._m03(nm03);
          dest._m10(m10);
          dest._m11(m11);
          dest._m12(m12);
          dest._m13(m13);
          dest._m30(m30);
          dest._m31(m31);
          dest._m32(m32);
          dest._m33(m33);
          dest._properties(properties & ~(PROPERTY_PERSPECTIVE | PROPERTY_IDENTITY | PROPERTY_TRANSLATION));
          return dest;
      }
docs: /* (non-Javadoc)
  @see org.joml.Matrix4fc#rotateY(float, org.joml.Matrix4f)