public static ColorCieLab convertDin99bLabToCieLab(final double L99b, final double a99b, final double b99b) {
        final double kE = 1.0; // brightness factor, 1.0 for CIE reference conditions
        final double kCH = 1.0; // chroma and hue factor, 1.0 for CIE reference conditions
        final double fac1 = 100.0 / Math.log(129.0 / 50.0); // L99 scaling factor = 105.50867113783109
        final double ang = Math.toRadians(16.0);

        final double hef = Math.atan2(b99b, a99b);
        final double c = Math.sqrt(a99b * a99b + b99b * b99b);
        final double g = (Math.exp(0.045 * c * kCH * kE) - 1.0) / 0.045;
        final double e = g * Math.cos(hef);
        final double f = g * Math.sin(hef) / 0.7;

        final double l = (Math.exp(L99b * kE / fac1) - 1.) / 0.0158;
        final double a = e * Math.cos(ang) - f * Math.sin(ang);
        final double b = e * Math.sin(ang) + f * Math.cos(ang);
        return new ColorCieLab(l, a, b);
    }
DIN99o.

@param l lightness of color.
@param a position between red and green.
@param b position between yellow and blue.
@return CIBELab colors converted to DIN99oLab color space.
@see <a href=
     "https://de.wikipedia.org/w/index.php?title=Diskussion:DIN99-Farbraum">https://de.wikipedia.org/w/index.php?title=Diskussion:DIN99-Farbraum</a>
src/main/java/org/apache/commons/imaging/color/ColorConversions.java